WebSocket握手期间出错:意外响应代码:500

Mar*_*sen 5 javascript websocket node.js socket.io angularjs

我在我的网站上使用websocket但随机它发送给我以下错误消息:

WebSocket连接到'ws://client.mydomain.com/socket.io/?EIO = 3&transport = websocket&sid = 4Kbec5T_XStAC949AACS'失败:WebSocket握手期间出错:意外响应代码:500

以下是我在应用程序中连接websocket的方法(注意它是一个Angular应用程序).

    app.factory('clientSocket', ['$sessionStorage', 'socketFactory', function ($sessionStorage, socketFactory) {
    var connection = '';
    $.ajax({
        url: 'config.json',
        async: false,
        dataType: 'json',
        success: function (response) {
            connection = response.app_url;
        }
    });
    var myIoSocket = io.connect(connection);

    var clientSocket = socketFactory({
        ioSocket: myIoSocket
    });
    clientSocket.forward('someEvent');

    clientSocket.on('connect', function () {
        if ($sessionStorage.activeUser != null) {
            clientSocket.emit('userData', $sessionStorage.activeUser.user);
        }
    });


    return clientSocket;
}]);
Run Code Online (Sandbox Code Playgroud)

我不太清楚问题是什么,但基本上连接字符串看起来像这样:

http://client.mydomain.com
Run Code Online (Sandbox Code Playgroud)

谁能告诉我发生了什么事?

小智 0

难道你不能通过在ajax的成功回调中添加其余代码来尝试一下吗?像这样:

app.factory('clientSocket', ['$sessionStorage', 'socketFactory', function ($sessionStorage, socketFactory) {
var connection = '';
$.ajax({
    url: 'config.json',
    async: false,
    dataType: 'json',
    success: function (response) {
        connection = response.app_url;
        var myIoSocket = io.connect(connection);

        var clientSocket = socketFactory({
    ioSocket: myIoSocket
});
clientSocket.forward('someEvent');

clientSocket.on('connect', function () {
    if ($sessionStorage.activeUser != null) {
        clientSocket.emit('userData', $sessionStorage.activeUser.user);
    }
});


return clientSocket;
    }
});
Run Code Online (Sandbox Code Playgroud)