随着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.emit()可以完成socket.on()所能做的所有事情。他们为什么要做这个功能? – 2012-07-19 23:20:15
我不知道,我检查了源代码,他们几乎相同(https://github.com/LearnBoost/socket.io/blob/master/lib/socket.js#L318)。也许这是历史性的,只是为了向后兼容。 – Charles 2012-07-20 06:53:42
socket.io的制作emit()做的事情不是EventEmitter的emit()做的事情是莫名其妙的,不是吗?这是一个在原始伪套接字之上的协议,它作为远端命名事件出现,而不是原始消息。它允许您为多个流使用单个套接字,从某种意义上说,可以将它们复用。 – aredridel 2012-11-25 16:38:31