限制域名连接问题

bobo888

如果我存多个域名在redis里面。能否在这个地方news redis()或者$connection->close();能否放在Applications\Chat\Event.php文件中处理。

$gateway->onConnect = function($connection)
{
    $connection->onWebSocketConnect = function($connection , $http_header)
    {
        if($_SERVER != 'http://www.xxx.com'&&$_SERVER != 'http://www.aaa.com')
        {
            $connection->close();
        }
    };
}; 
4586 9 0
9个回答

walkor

看看Workerman手册吧,Applications\Chat\Event.php属于GatewayWorker部分,如何在Event.php中关闭某个客户端连接,看GatewayWorker手册。
手册中说的很清楚,手册中有的不要在问答中提问了

  • 暂无评论
bobo888

如果做了
if($_SERVER != 'http://www.xxx.com'&&$_SERVER != 'http://www.aaa.com')
{
$connection->close();
}

如果另个网站(www.yyy.com)连接 ws = new WebSocket("ws://www.xxx.com:7272");
会出现很多 client:XXX.XXX.XXX.XXX:31748 gateway:127.0.0.1:7272 client_id:7f00000108ff000000c6 onClose:''
这样会对服务器有性能有影响吗?这样的情况怎么处理呢?

  • 暂无评论
walkor

影响可以忽略不计

  • 暂无评论
bobo888

如果IE没有关闭的话。服务器中一直无数显示
client:xxx.xxx.xxx.xxx:24096 gateway:127.0.0.1:7272 client_id:7f00000108fe00000012 onClose:''
client:xxx.xxx.xxx.xxx:24130 gateway:127.0.0.1:7272 client_id:7f00000108fe00000013 session:null onMessage:{"type":"login","client_name":"1234","room_id":"1"}
client:xxx.xxx.xxx.xxx:24096 gateway:127.0.0.1:7272 client_id:7f00000108fe00000012 onClose:''
client:xxx.xxx.xxx.xxx:24130 gateway:127.0.0.1:7272 client_id:7f00000108fe00000013 session:null onMessage:{"type":"login","client_name":"1234","room_id":"1"}

这样不会影响服务器负载吗?

  • 暂无评论
walkor

什么叫无数显示?

不想看显示把打印部分注释掉就行了

  • 暂无评论
bobo888

就是一直重复显示。不会停下。

  • 暂无评论
walkor

应该是服务端你的有代码判断当前连接域名不对,你代码调用close把链接关闭了,聊天室浏览器 js里面有判断链接关闭重连的逻辑,重连后又服务端关闭,所以会有很多onclose打印,把前端js重连部分去掉就好了

  • 暂无评论
bobo888

没有哦。代码是在你们官方下载。没有做过修改的。

  • 暂无评论
walkor

有问题贴截图吧,描述看不出来什么问题。这么久了,聊天室demo用的人非常多,还从来没有人反馈浏览器不关不断刷onclose问题

  • 暂无评论
年代过于久远,无法发表回答
🔝