start_gateway 做鉴权,会一直跑是怎么回事啊?

0
// 当客户端连接上来时,设置连接的onWebSocketConnect,即在websocket握手时的回调
$gateway->onConnect = function($connection)
{
$connection->onWebSocketConnect = function($connection , $http_header)
{
// 可以在这里判断连接来源是否合法,不合法就关掉连接
// $_SERVER['HTTP_ORIGIN']标识来自哪个站点的页面发起的websocket链接
if($_GET['token'] != '123uji')
{
$connection->close();
}
// onWebSocketConnect 里面$_GET $_SERVER是可用的
// var_dump($_GET);
};
};

前端JS
// 连接服务端
function connect() {
// 创建websocket
ws = new WebSocket("ws://"+document.domain+":7272?token=123uji2");
// 当socket连接打开时,输入用户名
ws.onopen = onopen;
// 当有消息时根据消息类型显示不同信息
ws.onmessage = onmessage;
ws.onclose = function() {
console.log("连接关闭,定时重连");
connect();
};
ws.onerror = function() {
console.log("出现错误");
};
}


拒绝后为什么控制台
client:51.55.41.246:59034 gateway:127.0.0.1:7272 client_id:7f00000108fd00000038 onClose:''
一直跑这个。。
PC我看会定时重连间隔1S左右
用手机一打开网页直接1S 10来条

已邀请:

six

赞同来自:

你这个问题问得有点那啥了,这个明显是你业务逻辑有bug啊。


客户端onclose执行了重连,服务端判断token不对就断开,然后客户端重连,服务端再次判断token不对继续断开,重连,断开,重连,断开。。。。控制台就打印很多日志喽。。。


你服务断开的时候给客户端发个数据,告诉客户端你token不对,别TM再连了。

要回复问题请先登录注册