1. 创建websocket服务器

swoole从1.7.9版本开始, 内置了websocket服务器功能,我们只需几行简单的PHP代码,就可以创建出一个异步非阻塞多进程的WebSocket服务器。

首先,我们在apache的工作空间下,新建一个项目,名称为swoole,然后在里面新建一个ws-server.php文件,该php文件主要创建一个websocket服务器,同时相应用户的请求,内容如下:

$ws_server = new swoole_websocket_server('192.168.1.169', 9502);//设置server运行时的各项参数

$ws_server->set(array('daemonize' => true, //是否作为守护进程

));//监听WebSocket连接打开事件

$ws_server->on('open', function ($ws, $request) {file_put_contents( __DIR__ .'/log.txt' , $request->fd);//$ws->push($request->fd, "Hello, Welcome\n");

});//监听WebSocket消息事件

$ws_server->on('message', function ($ws, $frame) {

pushMessage($ws,$frame);

});//监听WebSocket连接关闭事件

$ws_server->on('close', function ($ws, $fd) {echo "client-{$fd} is closed\n";

});$ws_server->start();//消息推送

function pushMessage($ws,$frame){$data = $frame->data;$msg = file_get_contents( __DIR__ .'/log.txt');for ($i=1 ; $i<= $msg ; $i++) {$ws->push($i, $frame->fd.' : '.$data);

}

}

上面的代码,创建了一个WebSocket服务器,它的ip地址为192.168.1.169,端口为9502,这些信息,可以根据实际情况来作调整。

2. 创建聊天交互页面

同样的,在swoole目录下,我们新建一个chat.html文件,这是一个纯静态的html5页面,主要作用是通过html5的WebSocket协议跟websocket服务器进行交互,其内容如下:

if(window.WebSocket){var webSocket = new WebSocket("ws://192.168.1.169:9502");

webSocket.onopen = function(event) {//webSocket.send("Hello,WebSocket!");

};

webSocket.onmessage = function(event) {var content = document.getElementById('content');

content.innerHTML = content.innerHTML.concat('

用户id-'+event.data+'

');

}var sendMessage = function(){var data = document.getElementById('message').value;

webSocket.send(data);

}

}else{

console.log("您的浏览器不支持WebSocket");

}


发送

3. 测试

到此为止,我们需要的两个文件都已经创建好了,下面让我们来测试下,是否能按我们的预期来工作。

3.1 启动WebSocket服务器

切换到项目的根目录,然后通过php命令行的方式,执行ws-server.php脚本,即可启动WebSocket服务器,整个命令如下:

cd /var/www/html/swoole

php ws-server.php

如图:

3.1 查看WebSocket服务器是否启动成功

输入命令:netstat -tunlp|grep 9502,如果能看到如下界面,则表示WebSocket服务器启动成功。

3.2 开始聊天

多准备几个浏览器,然后在每个浏览器中,输入http://192.168.1.169/swoole/chat.html,每个浏览器相当于一个用户,然后就可以模拟群聊了。

在Chrome浏览器的聊天窗口中,输入“大家好,我是Chrome”,此时,UC和Firefox浏览器的聊天窗口中,将会看到这个信息。同理,在UC和Firefox浏览器的聊天窗口中输入信息,另外两个窗口也是能看到的,下面是其中一个聊天窗口的截图,如下:

php3.2搭建临时聊天系统,基于swoole搭建聊天室程序相关推荐

  1. 用Asp.Net创建基于Ajax的聊天室程序

    原作者Dahan Abdo 译自CodeProject 如要下载源代码,请到我的网站,地址:http://www.vczx.com/article/show.php?id=1796 简 介 我的第一个 ...

  2. 【Vaadin教程】利用IDEA开发基于Vaadin网络聊天室程序

    为什么80%的码农都做不了架构师?>>>    利用Vaadin,我们可以轻松的开发出丰富的web界面,像写Swing一样写GUI,感觉什么extjs之类的弱爆了!下面是我做的一个网 ...

  3. 基于Python的聊天室

    基于Python的聊天室 文章目录 基于Python的聊天室 一.引言 1.1 背景和意义 1.2 系统要实现的功能 1.2.1 用户登录 1.2.2 群发消息 1.2.3 一对一聊天 1.2.4 发 ...

  4. 基于java的聊天室系统设计与实现(项目报告+开题报告+答辩PPT+源代码+部署视频)

    项目报告 Java网络聊天室系统的设计与实现 计算机从出现到现在有了飞速的发展,现阶段的计算机已经不单单是用于进行运算的独立的个体了,跟随计算机一同发展的还有互联网技术,经过了长久的发展,互联网技术有 ...

  5. 基于WebSocket实现聊天室(Node)

    基于WebSocket实现聊天室(Node) WebSocket是基于TCP的长连接通信协议,服务端可以主动向前端传递数据,相比比AJAX轮询服务器,WebSocket采用监听的方式,减轻了服务器压力 ...

  6. 基于python的聊天室_Python实现文字聊天室

    你是否想过用所学的Python开发一个图形界面的聊天室程序啊? 像这样的: image 如果你想开发这样一个有点怀旧风格的聊天程序,那么可以接着看: 要开发这个聊天程序,你需要具备以下知识点: asy ...

  7. java开发websocket聊天室_java实现基于websocket的聊天室

    [实例简介] java实现基于websocket的聊天室 [实例截图] [核心代码] chatMavenWebapp └── chat Maven Webapp ├── pom.xml ├── src ...

  8. java udp简单聊天程序_Java基于UDP协议实现简单的聊天室程序

    最近比较闲,一直在抽空回顾一些java方面的技术应用. 今天没什么事做,基于udp协议,写了一个非常简单的聊天室程序. 现在的工作,很少用到socket,也算是对java网络编程方面的一个简单回忆. ...

  9. Android 基于Socket的聊天室

    原文地址为: Android 基于Socket的聊天室 Socket是TCP/IP协议上的一种通信,在通信的两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路.一旦建立了虚拟的网络链路, ...

最新文章

  1. Android通过ksoap2调用.net(c#)的webservice
  2. 大数据安全标准现状和思考
  3. com口驱动_手机都没耳机口了,平衡口现在才来是作死还是?
  4. linux auditd 审计 简介
  5. java求最小步数,使数组值相等的最小步数 Minimum Moves to Equal Array Elements
  6. linux github中文官网,GitHub使用简介
  7. 统计c语言中英文字幕,C语言日记——递归
  8. CSS快速学习3:文本、背景等属性
  9. Ubuntu 16.04 LTS误删系统内核或驱动导致无法上网解决方案
  10. Ajax用POST方式传中文到SERVLET中,接收时乱码
  11. 如何摆脱工具类【转载】
  12. shl归纳推理测试题库_强生2020秋招笔试面试经验合集
  13. 【算法】Xgboost原理
  14. 计算机专业笔记本电脑华为,大学生不知道买什么电脑?来看这款华为荣耀极致性价比笔记本!...
  15. 初识C语言----完结篇
  16. RK3399平台开发系列讲解(内核设备树篇)3.25、WIFI设备树的解析
  17. 职场中最重要的情商,是管理情绪
  18. Binary XML file line #16 in: Error inflating class unknown
  19. 小综述 | 深度学习在数学文本相关领域的研究梳理
  20. Colour metric颜色度量

热门文章

  1. Maya ACES工作流程配置(Arnold 及 RedShift 贴图配置规范-还原出SP-Aces流程下贴图正确的效果) PS还原Aces流程下渲染的图
  2. 小马哥---高仿苹果5S刷机 6589芯片高配版 详细拆机图与开机界面图。山寨精仿机 版本多,
  3. 英文基础之语法(二)
  4. 乐视html5,乐视TV开放平台鼎力支持html5开发者
  5. delphi trackbar 判断停止拖动_飞智八爪鱼2首发评测,可拖动轮盘,全机高达27键,这波太秀了...
  6. lecture 3:Python数据的描述性统计
  7. AbutionGraph新特性-支持动态增删改的scheam free知识结构
  8. r语言 新增一列数字类型_R语言入门简明笔记—(02)
  9. 今年支付宝的集福字就靠这个了,天天不重样
  10. 基于百度AI语音合成,使用python编写的语音朗读工具