Node.js与websocket的socket.io

5
我是一名初学者,对于Node.js和websocket不太熟悉。我遇到了一个问题:
我的HTML代码如下:
<!DOCTYPE html>
<html>
    <head>
        <title>test</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <script>
            "use strict";
            var gniazdo = new WebSocket('ws://localhost:3000');
            gniazdo.onopen = function(){ 
                 console.log('Połączono');
            };
            gniazdo.onmessage = function(m){ 
                console.log(m.data); 
            };
        </script>
    </body>
</html>

我的Node.js代码:

var io = require('socket.io')(3000);
io.on('connection', function(socket){
    console.log('a user connected');
});

我在控制台中看到了错误:

WebSocket connection to 'ws://localhost:3000/' failed: Connection closed before receiving a handshake response 

Help plz :)


Socket.io 首先使用长轮询测试连接,如果支持则升级到 WebSockets。您需要使用 socket.io 客户端库。 - Ben Fortune
1个回答

7

您的客户端正在使用WebSockets,但是Socket.IO有自己的协议(可以通过WebSockets传输,但也可以通过其他协议传输)。请将您的客户端更改为使用Socket.IO的客户端:

<script src="https://cdn.socket.io/socket.io-1.1.0.js"></script>

<script>

    'use strict';

    var gniazdo = io('ws://localhost:3000');

    gniazdo.on('connect', function () {

        console.log('Połączono');

        gniazdo.on('message', function (m) {
            console.log(m.data);
        });

    });

</script>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接