回答:
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);
シンプルで正確(出典:Socket.IO google group):
socket.emit
サーバーとクライアントでカスタムイベントを発行できます
socket.send
'message'
イベントで受信したメッセージを送信します
TL; DR:
socket.send(data, callback)
本質的に呼び出しと同等です socket.emit('message', JSON.stringify(data), callback)
ソースコードを見ないで、send関数はより効率的な編集だと思います:文字列メッセージを送信するために、少なくとも?
つまり、基本的に出力はオブジェクトを送信できるため、非常に便利です。
この例を見てみましょう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
}));
}
基本的な双方向通信システムでは、socket.emitはより説得力があり、使いやすい(個人的な経験)ことが証明されており、そのような目的のために主に構築されたSocket.IOの一部です。
https://socket.io/docs/client-api/#socket-send-args-ack
socket.send
//メッセージイベントを送信します
socket.emit(eventName[, ...args][, ack])
// eventNameをカスタムできます