node.js - Socket.io 未从客户端发送到服务器

标签 node.js socket.io

我建立了一个服务器-客户端连接协议(protocol):

服务器:

const app = express();
const http = require('http');
const server = http.createServer(app);
const io = require('socket.io').listen(server);
io.on('connection', function (socket) {
    "use strict";
    socket.emit('connectionSuccess', {});
    socket.emit('initmap', map.objects);

    io.on('test', function (event) {
        console.log('received client emit');
    });
});

客户:

socket.on('connectionSuccess', function (event) {
    console.log('connection successful');
    socket.emit('test', {"test": "data"});
});

当服务器运行在指定端口,用户访问客户端时,连接建立,客户端控制台输出连接成功。

服务器能够发出“initmap”将数据发送到客户端以供读取,但是,在连接时将测试数据从客户端发送回服务器则不能这样说。

为什么在这种情况下,发射似乎只能从服务器到客户端工作,而不是从客户端到服务器?

最佳答案

您应该在套接字实例上监听 test 事件,而不是在服务器实例上:

io.on('connection', function (socket) {
  ...
  socket.on('test', function (event) {    // <-- `socket.on()` instead of `io.on()`
    console.log('received client emit');
  });
});

关于node.js - Socket.io 未从客户端发送到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46315543/

相关文章:

node.js - 使用 node.js 将 url 显示到控制台

node.js - React 中的 Axios 400 错误请求

node.js - 如何使用 Node.js 和 PHP 向单个用户发送实时通知

javascript - Socket.io 无法在没有 Express 的情况下进行外部访问

javascript - Nodejs/Javascript 回调使用 - 等待 API 调用

node.js - 访问本地主机上的 OAuthd 开源库

javascript - 如何将新日期列填充到现有 CSV 文件

nginx - 在多个服务器上使用 socketio 和 redis

node.js - ExpressJS + Socket.IO 路由

javascript - 如何使用 Express、AngularJS、Socket.io 进行广播并获取通知?