|
|
socket.emit(eventname, data) |
イベントの発火(=データの送信) |
socket.on(eventname, data) |
イベントの検知(=データの受信) |
- eventnameはクライアントサイド、サーバーサイドで一緒であれば任意の文字列を指定可能
- broadcast は socket.broadcast.emit とすることで実行できる
var io = require('socket.io').listen(app);
io.sockets.on('connection', function (socket) { // 2
log('connected');
socket.on('msg send', function (msg) { // 4
io.sockets.emit('msg push', msg); // 5
});
socket.on('disconnect', function() { // 7
log('disconnected');
});
});
var socket = io.connect('http://localhost'); // 1
socket.on('connect', function() { // 2
log('connected');
socket.emit('msg send', 'data'); // 3
socket.on('msg push', function (msg) { // 6
});
});
- クライアントが 'http://localhost' にソケット接続を要求
- サーバがクライアントとの接続を確立すると、サーバで 'connection' 、クライアントで 'connect' イベントが発生
- クライアントが 'msg send' イベントを発火して文字列 'data' を送信
- サーバで 'msg send' イベントが発生し、コールバックが実行される
- サーバが 'msg push' イベントを発火して受信したメッセージを送ってきた本人とそれ以外のクライアントに送信
- クライアントで 'msg push' イベントが発生し、コールバックが実行される
- クライアントが切断したら、サーバ側で 'disconnect' イベントが発生
- 5 の
io.sockets.emit(eventname, data)
は、socket.emit(eventname, data)
(メッセージを送ってきた本人に送り返す)と socket.broadcast.emit(eventname, data)
(メッセージを送ってきた本人以外にブロードキャスト)の両方を実行している。
予約語
調べてみました。
変数名や関数名として定義できない単語
break
case
catch
continue
debugger
default
delete
do
else
false
finally
for
function
if
in
instanceof
new
null
return
switch
this
throw
true
try
typeof
var
void
while
with