每个页面都这样写,到第二个页面的时候client_id会刷新,我这么写应该不对的吧?onopen是重新连接的吧?应该要怎么写呢?
或者说如何保存一个session,能保存uid,就算client_id刷新了也可以通过uid绑定
<script>
ws = new WebSocket("ws://127.0.0.1:7272");
ws.onopen = function() {
console.log("The connection is successful.");
$message = '{"type":"login"}'
ws.send($message);
console.log("login");
};
ws.onmessage = function(e) {
console.log("收到服务端的消息:" + e.data);
var date={"type":"login"};
};
</script>
按官网的示例,绑定uid即可。
uid怎么保存?断开连接后获取之前的uid
你的客户端总有token、session、jwt之类的来标识用户身份。
然后,接口解析出uid,使用
Gateway::bindUid
绑定。断开链接不是有回调嘛
或者说如何保存一个session,能保存uid,就算client_id刷新了也可以通过uid绑定
如果说是更换页面同一个用户刷新了client_id,需要发送消息给所有的页面,可以将同一个用户的client_id绑定到一个组里面
Gateway::sendToUid
说明:
void Gateway::sendToUid(mixed $uid, string $message);
向uid绑定的所有在线client_id发送数据。
注意:默认uid与client_id是一对多的关系,如果当前uid下绑定了多个client_id,则多个client_id对应的客户端都会收到消息,这类似于PC QQ和手机QQ同时在线接收消息。