websocket 控制器

    websocket 新增了类注解tag @WebSocket

    • 说明

    上面的注解标明了允许ws连接的URI path. 即客户端请求的ws连接类似: ws://IP:PORT/echo

    创建控制器类

    可以通过命令 来快速创建一个控制器。

    在每个控制器里允许用户处理的几个事件有 handshake open message close

    通过方法 checkHandshake 可以对客户端的握手请求进行处理。 比如 验证token,domian … 等

    必须返回含有两个元素的array

    • 第一个元素的值来决定是否进行握手
    • 第二个元素是response对象 - 可以在response设置一些自定义header,body等信息

    连接打开 open

    在握手成功后,就会触发 open 事件,此时开始你就可以给客户端发消息了 :)

    注意

    • onOpen 是swoft在握手后通过 $server->defer() 来触发的,没有在协程环境中。

    通过控制器的方法 onMessage 你可以接收到客户端的消息和发送消息给对方. 此方法是必须存在的

    连接关闭 close

    当客户的关闭连接或者server在其他地方主动关闭连接时,就会触发此事件。

    • 此方法也是可选的,可以没有
    • 这里面方法上的 server 对象都是 Swoole\WebSocket\Server 的实例

    如果你安装并启用了 devtool, 那么你可以打开页面 来进行ws测试

    • 填上你的ws server地址(注意不要忘了URI path)
    • 然后就可以连接上ws server 并收发消息了
    • 如果你在前台运行的server 你也能在运行 server的console 上看到ws连接与消息log

    效果截图: