耿贤坤
- 耿贤坤 回复了 zhangyongquan 的回复
楼主!我的mac 命令行 输入这个命令 yii websocket/start 一直报错Unknown command: websocket/start
有可能是因为没有配置bootstrap造成的
- 耿贤坤 赞了说说我是大傻X...
楼主 这个能单推消息到 一个用户吗?
当然可以,channel的接口类声明了两个方法,
execute
和close
,分别在websocket消息处理阶段和websocket通道结束阶段触发。execute
方法就是在消息处理阶段被触发的,它接收两个参数,分别是$fd
客户端连接ID,及$data
客户端传输来的数据,同时这个方法的返回值需要以数组的形式返回两个参数,第一个就是$fds
表示将消息推送到哪个或哪些个客户端上(多个以数组形式返回),第二个参数$data
就表示推送给用户的消息了。通过这种方式可以实现根据业务灵活的推送消息了,在 https://github.com/yiiplus/yii2-websocket/tree/master/examples 中,实现了一个直播间推送消息的例子,其中通过
yii\redis\ActiveRecord
绑定用户与直播间的关系,就可以实现往指定直播间推送消息的功能了。另外,在客户端断开连接时会触发所有 channels 下的 close 方法,你可以用来清理客户端在服务器上与业务的绑定关系。在上面的例子代码中也有使用。
欢迎尝试,现在文档不太完善,有什么问题随时沟通哦~
不好意思,上面配置描述有误,文章不知为什么没办法修改,将channel 更改为 channels,如下:
'compoents' => [ 'websocket' => [ 'class' => '\yiiplus\websocket\<dirver>\WebSocket', 'host' => '127.0.0.1', 'port' => 9501, 'channels' => [ 'push-message' => '\xxx\channels\PushMessageChannel', // 配置 channel 对应的执行类 ], ], ],