我是所有Web套接字主题的新手,所以请为我谅解。
我正在尝试从服务器向房间中除ME以外的所有人发送消息。我是发件人,所以我应该收到这些消息。
但是无论如何,Socket.io仍在向我发送这些消息。 我做了所有参考文档的工作。
查看我的代码:
服务器:
const io = require('socket.io');
// Sever is an instance of express.js server comming from outside
const ioInstance = io(server);
ioInstance.on('connection', socket => {
const {
request: { user }
} = socket;
const userExist = user || false;
if (!userExist) {
return;
}
socket.on('joinRoom', room => {
socket.join(room);
});
socket.on('leavingRoom', listId => {
socket.leave(`list-${listId}`);
});
updateItemState(socket);
});
};
const updateItemState = socket => {
socket.on('item-busy', data => {
const { listId } = data;
console.log('item is busy');
console.log(data);
socket.to(`list-${listId}`).emit('item-busy', data);
});
};
客户端:
ItemComponent.jsx
import io from 'socket.io-client';
handleSocketConnection = () => {
const {
match: {
params: { id: listId }
}
} = this.props;
if (!this.socket) {
this.socket = io();
}
this.socket = io();
this.socket.on('connect', () =>
this.socket.emit('joinRoom', `list-${listId}`)
);
this.socket.on('item-busy', data => {
const { itemId, listId } = data;
console.log('this item is busy');
});
};
现在,我要在两个浏览器实例上启动我的应用程序。我的左侧是Chrome Canary,我正在发出“繁忙”事件的任何常规Chrome。 我希望仅在Chrome Canary实例上获得console.log,而在常规Chrome上不能。
但是我在两个浏览器上都得到了这些日志。 我做错了什么?