Answers:
使用socket.emit,您可以像这样注册自定义事件:
服务器:
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
客户:
var socket = io.connect('http://localhost');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
Socket.send的作用相同,但您不是向“新闻”注册而是向消息发送:
服务器:
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.send('hi');
});
客户:
var socket = io.connect('http://localhost');
socket.on('message', function (message) {
console.log(message);
});
socket.send
是单纯只是一个别名socket.emit('message', message);
TL; DR:
socket.send(data, callback)
本质上等同于调用 socket.emit('message', JSON.stringify(data), callback)
如果不看源代码,我会假设send函数的编辑效率更高:对于发送字符串消息,至少?
所以是的,基本上,emit允许您发送对象,这非常方便。
通过以下示例socket.emit
:
sendMessage: function(type, message) {
socket.emit('message', {
type: type,
message: message
});
}
对于那些在家中保持得分的人来说,使用socket.send
以下代码是这样的:
sendMessage: function(type, message) {
socket.send(JSON.stringify({
type: type,
message: message
}));
}
https://socket.io/docs/client-api/#socket-send-args-ack
socket.send
//发送消息事件
socket.emit(eventName[, ...args][, ack])
//您可以自定义eventName