我建立了一个服务器-客户端连接协议(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/