0

socket.io が接続しようとするたびに、エラーが発生しました (chrome 33 / firefox 24):

「wss://playground-c9-doum.c9.io/socket.io/1/websocket/QBGO1ZlPhWUBkMVQ9cUP」への WebSocket 接続に失敗しました: WebSocket ハンドシェイク中のエラー: ステータス行が CRLF socket.io.js:2371 で終了しません

サーバー側:

var io = socket.listen(server);
var store = require('connect-mongo')(express);

io.set('authorization', passportSocketIo.authorize({
    passport: require('passport'),
    cookieParser: express.cookieParser,
    key:         'connect.sid',       // the name of the cookie where express/connect     stores its session_id
    secret:      constant.SALT,    // the session_secret to parse the cookie
    store:       new store({
        mongoose_connection: db,
        collection: constant.SESSION_COLLECTION,
    }),
    success:     onAuthorizeSuccess,  // *optional* callback on success - read more below
    fail:        onAuthorizeFail,
}));

io.sockets.on('connection', function (socket) {
    socket.on('chat:newText', function (data) {
        console.log(socket.handshake.user);
        data.username = socket.handshake.user.username;
        io.sockets.emit('chat:newText', data);
     });
});

クライアント側 :

var connect = function () {
    if (Auth.isLoggedIn() === true) {
        socket = io.connect();
        connected = true;
        return true;
    }
    else {
        console.log('Socket wont connect as user is not logged in');
        return false;
    }
};

Express、passport、passport-socket.io を使用しています...

ソケット構成 (io.set('authorization')) の 'auth' 部分を削除しようとしたため、passport-socket.io に問題があるとは思いませんが、同じ問題が発生します。

また、クライアント socket.connect(url) に特定の URL を指定しようとしましたが、どちらも機能しませんでした。

Socket.io が完全に失敗するわけではありません。websocket 接続が中断されているため、xhr ポーリングが開始されます (面倒です...)。

多くの調査を行いましたが、その問題について何も見つかりませんでした (github にも新しい問題を投稿しました)。

npm socket.io -v give 1.3.8 /socket.io/socket.io.js (クライアント) is Socket.IO.js build:0.9.16

4

0 に答える 0