【问题标题】:Node.js socket.io with websocket带有 websocket 的 Node.js socket.io
【发布时间】:2014-10-16 19:46:11
【问题描述】:

我是 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 

请帮忙:)

【问题讨论】:

  • Socket.io 首先使用长轮询测试连接,如果支持,则升级到 websocket。您需要使用 socket.io 客户端库。

标签: javascript node.js websocket socket.io


【解决方案1】:

您的客户端正在使用 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>

【讨论】:

    猜你喜欢
    • 2013-11-24
    • 1970-01-01
    • 2016-10-20
    • 2023-03-18
    • 2011-09-29
    • 2012-09-05
    • 2023-03-24
    • 2021-12-30
    • 2011-12-27
    相关资源
    最近更新 更多