本文將從實例出發,教大家怎么使用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高級編程視頻教程免費獲取