socket.emit不发送消息给发件人

  1. 'socket.emit '不发送消息给发送它的客户端
  2. 'socket.broadcast.emit'将消息发送给包括发件人在内的所有客户端。

我无法弄清楚我在这里错过了什么。 对于第二种情况,我在发送消息时检查了socket.id,并在接收到响应时进行了logging,结果是一样的

socket.js

var socket = require('socket.io')(), socketApi = {}; socketApi.io = socket; socketApi.io.on('connection',(client) => { client.on('clientMessage', (msg) => { console.log('hi'); client.emit('serverMessage',msg); }) client.on('disconnect',() => { socketApi.io.emit('serverMessage','client is disconnected'); console.log('disconnected'); }) }) module.exports = socketApi; 

client.js

 getServerResponse() { socket.on('serverMessage',(msg) => { console.log(msg); }) } 

根据文档broadcast.emit发送给除发送者以外的所有人,并只发送给发送者: https : //socket.io/docs/emit-cheatsheet/ 。

我在同一个问题,所以我最终打电话给两个:

 // socket.io server io.on('connection', socket => { socket.on('message', (data) => { messages.push(data) socket.broadcast.emit('message', data) // sends to all except the sender socket.emit('message', data) // sends to the sender }) })