我已经使用棘轮集成了推杆。向所有用户广播工作正常。
现在,我正在尝试找到一种方法,当我获得连接时,如何向特定用户发送消息。
订阅时执行的方法:
public function onSubscribe(ConnectionInterface $conn, $topic) {
$conn->send(json_encode("Hello"));
}
客户端的JS:
var conn = new ab.Session('ws://127.0.0.1:8080',
function() {
conn.subscribe('chat', function(topic, data) {
console.log(data); // here I'd like to get that "Hello" message
});
},
function() {
console.warn('WebSocket connection closed');
},
{'skipSubprotocolCheck': true}
);
我没有收到任何消息,我想我没有正确格式化它(json_encode("您好"))。有什么帮助吗?
您需要以某种方式存储连接,然后直接调用它们。
例如:
$conns[$conn->resourceId] = $conn;
然后后来:
$conns[$resourceId]->write("new data");
至于为什么你在订阅时没有收到消息,请尝试 write() 方法而不是 send() 方法。
此外,请检查控制台以查看您是否正在接收数据但未正确解压缩。