如沐博客-互联网观察者

致力于互联网产业的发展

« 基于websocket和swoole的简易聊天室asp.net Http异常eurl.axd出错信息解决方法 »

基于websocket和swoole的简易聊天室(二)

以上代码是客户端代码,在浏览器打开,就可运行,HTML部分没什么好说的,主要是看js部分的websocket代码,目前主流浏览器,还有微信小程序都支持websocket,使用的时候,new一个websocket对象,就算是请求连接,它的连接和TCP连接一样,都是三次握手,然后连接成功后,回调ws.onopen函数,收到服务端消息则调用ws.onmessage函数,以下依次类推,应该能看明白,服务端也是差不多的模式,都是通过回调函数来进行业务逻辑的处理,我在浏览器发送数据给服务端,服务端收到后,会分发给所有的客户端,然后所有客户端收到后,将消息添加到聊天窗口;

  1. <?php  
  2.   
  3. $server = new swoole_websocket_server("0.0.0.0", 9501);  
    1. $server->on('open', function (swoole_websocket_server $server, $request) {  
    2.     echo "server: handshake success with fd{$request->fd}\n";  
    3. });  
    4.   
    5. $server->on('message', function (swoole_websocket_server $server, $frame) {  
    6.     foreach($server->connections as $key => $fd) {  
    7.         $user_message = $frame->data;  
    8.         $server->push($fd, $user_message);  
    9.     }  
    10.   
    11. });  
    12.   
    13. $server->on('close', function ($ser, $fd) {  
    14.     echo "client {$fd} closed\n";  
    15. });  
    16.   
    17. $server->start();  
    18.  

这是服务端代码,很简单,需要注意的是$server->connections是一个对象不是数组,不能var_dump();$fd就是连接标识符,通过这个来区分客户端的连接,其实就是个数字;

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Copyright 2010-2021 25230.NET All Rights Reserved.