我想在与GatewayWorker建立连接前对请求连接的来源进行验证,因此在页面中请求连接时传入了token,请求代码如下:
let token = 'abc';
ws = new WebSocket('ws://192.168.0.199:8120', [token]);
服务器端可以通过Sec-WebSocket-Protocol读取到token值,但验证通过后客户端还是提示连接失败,也没有具体的失败原因信息
在网上查了查,似乎是服务器端需要将Sec-WebSocket-Protocol中的内容回写到Response的Header中,我初次使用GatewayWorker,不知道要如何将子协议写入到Response中, 在GatewayWorker官方文档中没有找到相关的信息,哪位朋友知道这个问题要如何处理呢?
可以参考这个帖子:https://wenda.workerman.net/question/5140
谢谢,query传递token的方式我已经调试通过了,只是token的字符串比较长,我想用子协议的形式再试试看,也想把子协议这一块了解的清楚一些。
Query传递token的方式已经调试通过了,我想再用子协议的方式试试看,还请知道的朋友指点一下,谢谢
调试通过了,多谢!
我在GatewayWorker中尝试这样设置(在BusinessWorker中的onGatewayMessage回调中实现):
if(isset($data["body"])){
if(isset($data["body"]["server"])){
if(isset($data["body"]["server"]["HTTP_SEC_WEBSOCKET_PROTOCOL"])){
//var_dump($data["body"]["server"]["HTTP_SEC_WEBSOCKET_PROTOCOL"]);
这样做,但是还是没有生效