关于swoole会话的问题

李冰
  • 176
 var token = localStorage.getItem('userToken');
    if(!token){
            alert('请先登录');
       return false;
  }

  var ws = new WebSocket("ws://127.0.0.1:8081");

在ws.onopen 的时候打算将token传到服务器做校验,但是貌似ws.send() 只能穿一个值,

var data = {
token:token,
data:// 一些数据
};

ws.send(data);

如果这样传的话后台获取到的是:"{"receive from":4,"data":"[object Object]"}",

有什么办法传值在后台获取并且做token校验呢?
或者说在send的时候能不能将token加到header

回复
阅读 1.8k
4 个回答

var ws = new WebSocket("ws://127.0.0.1:8081?token={token}");

完全可以换一种思路,首先网络只能传送流数据这是无法改变的,有非常多的方法可以将对象通过特定格式以字符串的形式传送。比如,JSON、FORM,后端取出来后再解析成相应类型就行

封装一个函数
ws.sendObject = function(data) {

return ws.send(JSON.stringify(data));

};

自己突然有一个想法,就是将token和fd绑定写入redis/mysql, 在请求的时候根据fd去查询,但是用户每打开一个窗口就创建一个fd,所以这种貌似是不可取的吧???

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏