我建立了一个服务器 - 客户端连接协议:
服务器:
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'以将数据发送到客户端以供读取,但是,在连接时将测试数据从客户端发送回服务器也是如此。
为什么在这种情况下,发出似乎只能在服务器之间工作而不是客户端到服务器?
答案 0 :(得分:1)
您应该在套接字实例上侦听test
事件,而不是在服务器实例上:
io.on('connection', function (socket) {
...
socket.on('test', function (event) { // <-- `socket.on()` instead of `io.on()`
console.log('received client emit');
});
});