Heroku上的Socket.io“会话ID未知”错误
Posted
技术标签:
【中文标题】Heroku上的Socket.io“会话ID未知”错误【英文标题】:Socket.io "Session ID unknown" error on Heroku 【发布时间】:2017-11-29 08:00:02 【问题描述】:我有一个使用 Socket.io 的 Node JS 应用程序部署到 heroku。我已按照https://devcenter.heroku.com/articles/node-websockets 提供的步骤正确设置代码,但不知何故,我似乎无法正确使用 Web 套接字。
我所有的套接字轮询请求都失败并出现以下错误。
"code":1,"message":"会话 ID 未知"
当我在本地运行相同的代码时,它似乎运行良好。
客户
function createSocket()
socket = io();
socket.on('connect', function ()
socket.emit('registerUser', userEmail: $scope.userInfo.userEmail );
);
socket.on('list_of_files', function (data)
$timeout(function ()
$scope.fileList = data;
);
);
服务器
var io = require('socket.io')(server);
io.sockets.on('connection', function (socket)
socket.on('registerUser', function (data)
socketClients[data.userEmail] = socket;
);
);
我还启用了 heroku 的会话亲和性,但仍然没有运气
【问题讨论】:
你使用的是哪个版本 【参考方案1】:ios 平台上的同样问题,“session id unknown ...”
之前
[[SocketIOClient alloc] initWithSocketURL:url config:@@"log": @NO, @"forcePolling":@YES, @"reconnectWait":@1];
之后
[[SocketIOClient alloc] initWithSocketURL:url config:@@"log": @NO, @"forcePolling":@YES, @"forceWebsockets":@YES];
【讨论】:
【参考方案2】:我知道为时已晚,但对于那些仍在寻找答案的人,请尝试在客户端套接字上添加此选项。
path: '/socket.io',
transports: ['websocket'],
secure: true,
也只是为了您的信息,我在使用 nginx 和代理部署到登台服务器后遇到了这个问题
【讨论】:
非常感谢! 伙计号。问题是粘性会话不起作用。如果你使用 websocket 那么你并没有解决问题,你只是禁用了长轮询,这是 socket.io 的一个重要特性。以上是关于Heroku上的Socket.io“会话ID未知”错误的主要内容,如果未能解决你的问题,请参考以下文章
Chrome 中的“意外响应代码:503”。也许与heroku上的socket.io有关?
Heroku 上的 Socket.io 聊天应用程序与 node.js