Workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架。被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏、PHP聊天室、硬件通讯、智能家居、车联网、物联网等领域的开发。 支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。拥有异步Mysql、异步Redis、异步Http、异步消息队列等众多高性能组件。
workerman下载地址:https://www.workerman.net/download
workerman用来实现聊天室是非常简单的,已经封装好了的socket可以直接创建websocket服务端,而不用去自己写。
官网也有手册,也有关于websocket的例子。
<?php use WorkermanWorker; require_once __DIR__ . '/Workerman/Autoloader.php'; //创建一个Worker监听2346端口,使用websocket协议通讯 $ws_worker = new Worker("websocket://0.0.0.0:2346"); // 启动4个进程对外提供服务 $ws_worker->count = 4; // 当收到客户端发来的数据后返回hello $data给客户端 $ws_worker->onMessage = function($connection, $data){ // 向客户端发送hello $data $connection->send('hello ' . $data); }; // 运行worker Worker::runAll();
ws = new WebSocket("ws://127.0.0.1:2346"); ws.onopen = function() { alert("连接成功"); ws.send('tom'); alert("给服务端发送一个字符串:tom"); }; ws.onmessage = function(e) { alert("收到服务端的消息:" + e.data); };
这是手册上面的一个例子,有了这个例子,自己做一个聊天室就很容易了,也不用去解析websocket的加密什么的。
Worker类的最常用3个回调方法
onConnect(进行连接)
onClose(关闭连接)
onMessage(前端发来消息)
向已连接的所有客户端进行发送消息
//$connection在上面3个回调方法参数里面都有 foreach($connection->worker->connections as $con) { $con->send("消息内容"); }
代码过多,我就打包放到度盘里面了
下载地址:链接:https://pan.baidu.com/s/1miuhAru 密码:1w2c
3条评论登录后可见