Socket.io客户端无法与Websocket服务器一起使用

时间:2020-02-25 13:05:31

标签: go websocket socket.io gorilla

我使用https://github.com/gorilla/websocket在go中编写了一个Websocket服务器。 在客户端上,前端团队希望使用Socket.io,但无法正常工作。 使用普通的websocket,一切正常。我没有关于Socket.io的很多知识,只是我在互联网上阅读的知识,我没有发现任何决定性的最新答案。

是否有可能使Socket.io与普通的websocket服务器一起工作?

Socket.IO客户端错误:超时。
Socket.IO客户端代码:

    var token = "valid_token";

    var socket = io(
        'ws://localhost:6060',
        {
            transports: ['websocket'],
            path: '/ws/dispatchers',
            query:  {
                token: token
            },
        }
    );

    socket.on('connect_error', (error) => {
        console.log("------connect_error------");
        console.log(error);
    });

    socket.on('connect_timeout', (timeout) => {
        console.log("------timeout-----");
        console.log(timeout);
    });

    socket.on('connect', function(){
        console.log("---------connect---------");
    });
    socket.on('event', function(data){
        console.log(data)
    });
    socket.on('disconnect', function(){
        console.log("---------disconnect---------")
    });
    socket.on('error', function(err){
        console.log("--------error------------");
        console.log(err)
    });

    socket.on('ping', () => {
        console.log("--------ping------------");

    });

    socket.on('pong', (latency) => {
        console.log("--------pong------------");
    });

后端错误:websocket:关闭1005(无状态)
后端代码与: https://github.com/gorilla/websocket/tree/master/examples/chat

1 个答案:

答案 0 :(得分:0)

来自Socket.io文档

什么不是Socket.IO不是WebSocket实现。 尽管Socket.IO确实确实在可能的情况下使用WebSocket作为传输方式, 它向每个数据包添加一些元数据:数据包类型,名称空间 以及需要消息确认时的数据包ID。那是 为什么WebSocket客户端将无法成功连接到 Socket.IO服务器和Socket.IO客户端将无法连接 到WebSocket服务器。请参阅协议规范 在这里。