我有一个使用Socket.io部署到heroku的Node JS应用程序。我已按照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的会话亲和力,但仍然没有运气
答案 0 :(得分:1)
我知道为时已晚,但对于仍在寻找答案的用户,请尝试在客户端套接字上添加此选项。
{
path: '/socket.io',
transports: ['websocket'],
secure: true,
}
仅供参考,我在使用nginx和代理部署到登台服务器后遇到了这个问题
答案 1 :(得分:0)
iOS平台上的相同问题,“会话ID未知...”
之前
[[SocketIOClient alloc] initWithSocketURL:url config:@{@"log": @NO, @"forcePolling":@YES, @"reconnectWait":@1}];
之后
[[SocketIOClient alloc] initWithSocketURL:url config:@{@"log": @NO, @"forcePolling":@YES, @"forceWebsockets":@YES}];