【问题标题】:Socket.IO and express unable to connectSocket.IO 和 express 无法连接
【发布时间】:2017-05-22 03:21:37
【问题描述】:

我正在尝试使用 Socket.IO 和 Express 为 WebRTC 构建一个简单的信令服务器。我以前从未使用过 Express 或 Socket.IO,所以我想我只是通过几个示例(使用 ES6)。毫不奇怪,我在连接服务器时遇到了麻烦。任何人都可以建议吗?这是我的非常基本的服务器,直接来自文档,使用https://github.com/riebel/socketio-es6-starter 作为指南修改为 ES6。

import http from 'http';
import express from 'express'
import SocketIO from 'socket.io'

let app = express();
let server = http.Server(app);
let io = new SocketIO(server);

app.get('/', (req, res) =>{
    res.send('hi');
});

io.on('connection', (socket) => {
    "use strict";
   socket.emit('news', {hello: 'world'});
   socket.on('my other event', (data) => {
       console.log(data)
   })
});

server.listen(80, () => {
    "use strict";
    console.log('Listening on port 80');
});

我正在使用来自 npm 的 wscat 实用程序,每次尝试连接时,我都会得到以下信息:

我尝试过使用 DEBUG 环境变量,但它似乎没有多大作用。我还尝试按照最后一行执行 ws://localhost:80/socket.io ,但没有成功:

【问题讨论】:

  • socket.io 是 webSocket 之上的附加层。您无法连接 webSocket -> socket.io,反之亦然。您需要一个 socket.io 客户端来连接到 socket.io 服务器。

标签: node.js sockets socket.io ecmascript-6


【解决方案1】:

好吧,在使用 Socket.IO 时,套接字连接似乎比我想象的要复杂一些。上面的服务器实际上没有任何问题,但是简单地使用wscat 并尝试仅连接到ws://localhost 是不正确的。我认为它只适用于 WebSockets,但如果你使用的是 Socket.IO,它就不同了。 Windows shell 中使用wscat 实用程序(在我的情况下)连接我的设置的完整命令必须是

wscat -c ws://localhost:80/socket.io/\?transport=websocket

注意端点是/socket.io/。您也可以从这里使用此 URL How to connect with socket.io from a ws client?(注意转义):

ws://localhost:3000/socket.io/?EIO=3&transport=websocket

你也可以试试iocat npm 包,它似乎简化了它,就像我最初尝试做的那样。

【讨论】:

    猜你喜欢
    • 2016-09-09
    • 1970-01-01
    • 2014-08-05
    • 2014-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    • 2020-07-24
    相关资源
    最近更新 更多