『実践Node.jsプログラミング』誤植訂正
Kindle版『実践Node.jsプログラミング』のコードに誤植があったので、気づいた範囲で書いておきます。
第2章
2.4.1 Socket.IOサーバーを設定する(p.31)
変数宣言部。 左辺のオブジェクトリテラルが消えているので追加。
// lib/chat_server.js var socketio = require('socket.io'); var io; var guestNumber = 1; var nickNames = {}; var namesUsed = []; var currentRoom = {};
リスト2-7:Socket.IOサーバーを始動する(p.32)
assignGuestName()
の引数nickNames
が?nickNames
になっていたので削除。
// lib/chat_server.js
guestNumber = assignGuestName(socket, gutstNumber, nickNames, namesUsed);
チャットメッセージの送信(p.36)
これは誤植というわけではないのですが、broadcast
はリクエストを投げてきたクライアント以外のクライアントに対してブロードキャストする仕様になっているので、サンプルコードのままだと自分の発言がチャットルームに表示されません。
というわけで、以下のように書き換えました。
// lib/chat_server.js function handleMessageBroadcasting(socket) { socket.on('message', function(message) { var response = {text: nickNames[socket.id] + ': ' + message.text}; socket.emit('message', response); socket.broadcast.to(message.room).emit('message', response); console.log(nickNames[socket.id] + '@' + message.room + ': ' + message.text); // server log }); }