Heroku上的Socket.io“会话ID未知”错误

时间:2017-06-26 13:00:39

标签: node.js sockets heroku socket.io

我有一个使用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的会话亲和力,但仍然没有运气

2 个答案:

答案 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}];