本文将从实例出发,教大家怎么使用swoole快速搭建服务器,实现简易聊天。
我使用的环境是
php-fpm : 7.2.8 nginx : 1.19.6 redis : 5.0.3服务端直接copy文档实例并添加自己的业务逻辑
$this->server = new Server("0.0.0.0", 9501); $this->server->set([ 'worker_num' => 1, 'heartbeat_check_interval' => 30, 'heartbeat_idle_time' => 62, 'daemonize' => true, //开启守护进程 'log_file' => '/opt/local/swoole_log/ws_log' ]); $this->server->on('message', function (Server $server, $frame) { echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n"; $object = json_decode($frame->data, true); if (!empty($object)) { $this->push($object); } $this->disposeMember($frame->fd, true, $object['nickname']); }); $this->server->on('close', function ($ser, $fd) { echo "client {$fd} closed\n"; $nickname = $this->disposeMember($fd, false); if (!empty($nickname)) { $this->push([ 'nickname' => $nickname, 'content' => '退出了聊天室', 'type' => 1, 'time' => date("Y-m-d H:i:s", time()) ], null, $fd); } }); $this->server->start();
客服端使用js的websocket接口并添加自己的业务逻辑
initWebSocket: function () { var that = this; try { if (window.WebSocket){ that.server = new WebSocket(that.ws_server); // 连接 that.server.addEventListener('open', (event) => { // console.log(that.lockReconnect); if (that.is_newserver) { that.sendMessageCopy(1, '进入了聊天室'); that.is_newserver = false; }; that.start(); }); // 关闭 that.server.addEventListener('close', (event) => { console.log('close'); that.reconnect(); }); that.server.onmessage = function (evt) { that.reset(); let test = JSON.parse(evt.data); that.chatList.push({ type : test.type, nickname: test.nickname, content : test.content, avatar : test.avatar, time : test.time }); console.log('Retrieved data from server: ' + evt.data); }; that.server.onerror = function (evt, e) { console.log('Error occured: ' + evt.data); }; }else{ console.log("您的浏览器不支持WebSocket"); } } catch(e) { //重连 reconnect(that.ws_server); } },聊天室效果
以上就是“实例分享||使用swoole快速搭建websocket,实现简单聊天”的详细内容,想要了解更多swoole教程欢迎持续关注编程学习网
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/8803/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料
查 看2022高级编程视频教程免费获取