swoole聊天室
Posted php-linux
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swoole聊天室相关的知识,希望对你有一定的参考价值。
服务端:
<?php class Chat const HOST = ‘0.0.0.0‘;//ip地址 0.0.0.0代表接受所有ip的访问 const PART = 8080;//端口号 private $server = null;//单例存放websocket_server对象 public function __construct() //实例化swoole_websocket_server并存储在我们Chat类中的属性上,达到单例的设计 $this->server = new swoole_websocket_server(self::HOST, self::PART); //监听连接事件 $this->server->on(‘open‘, [$this, ‘onOpen‘]); //监听接收消息事件 $this->server->on(‘message‘, [$this, ‘onMessage‘]); //监听关闭事件 $this->server->on(‘close‘, [$this, ‘onClose‘]); //设置允许访问静态文件 $this->server->set([ ‘document_root‘ => ‘/www/chat1‘,//这里传入静态文件的目录 ‘enable_static_handler‘ => true//允许访问静态文件 ]); //开启服务 $this->server->start(); /** * 连接成功回调函数 * @param $server * @param $request */ public function onOpen($server, $request) echo $request->fd . ‘连接了‘ . PHP_EOL;//打印到我们终端 /** * 接收到信息的回调函数 * @param $server * @param $frame */ public function onMessage($server, $frame) echo $frame->fd . ‘来了,说:‘ . $frame->data . PHP_EOL;//打印到我们终端 foreach ($server->connections as $fd) //遍历TCP连接迭代器,拿到每个在线的客户端id //将客户端发来的消息,推送给所有用户,也可以叫广播给所有在线客户端 $server->push($fd, json_encode([‘no‘ => $frame->fd, ‘msg‘ => $frame->data])); /** * 断开连接回调函数 * @param $server * @param $fd */ public function onClose($server, $fd) echo $fd . ‘走了‘ . PHP_EOL;//打印到我们终端 $obj = new Chat();
客户端
<!doctype html> <html> <head> <meta charset="utf-8"> <title>聊天室</title> <script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script> </head> <body> <textarea class="log" style="width: 100%; height: 500px;"> =======聊天室====== </textarea> <input type="button" value="连接" onClick="link()"> <input type="button" value="断开" onClick="dis()"> <input type="text" id="text"> <input type="button" value="发送" onClick="send()"> <script> function link() var url=‘ws://192.168.33.60:8080‘; socket=new WebSocket(url); socket.onopen=function()log1(‘连接成功‘) socket.onmessage=function(msg)log(msg.data);console.log(msg); socket.onclose=function()log1(‘断开连接‘) function dis() socket.close(); socket=null; function log1(var1) $(‘.log‘).append(var1+‘\\r\\n‘); function log(var1) var v=$.parseJSON(var1) $(‘.log‘).append(‘用户‘+v[‘no‘]+‘说:‘+v[‘msg‘]+‘\\r\\n‘); function send() var text=$(‘#text‘).val(); socket.send(text); function send2() var json = JSON.stringify(‘type‘:‘php‘,‘msg‘:$(‘#text2‘).attr(‘value‘)) socket.send(json); </script> </body> </html>
服务端 启动
php Chat.php
访问客户端的html 浏览器打开
参考 https://www.jianshu.com/p/ac77f05bee56
以上是关于swoole聊天室的主要内容,如果未能解决你的问题,请参考以下文章