node.jsでサーバサイドのJavaScrpt開発:socket.ioはwscatではなくiocatでデバッグ

久しぶりにsocket.ioを使うので、簡単なプログラムを作ってテストをしてみることにしました。サーバサイドはこれ。

/// var fs = require(""fs"");var server = require(""http"").createServer(function(req, res) {     res.writeHead(200, {""Content-Type"":""text/html""});     var output = fs.readFileSync(""./index.html"", ""utf-8"");     res.end(output);}).listen(8080);var io = require(""socket.io"").listen(server);var reply:string;io.sockets.on(""connection"", (socket) => {  io.sockets.emit(""message"", ""thank you for connecting"");  console.log(""connection from socket.io client"");  socket.on(""message"", (message) => {    console.log(""key:message %s"", message);    reply= ""I got message from you:"" + message;    io.sockets.emit(""message"", reply);  });  socket.on(""disconnect"", () => {    console.log(""disconnected"");  });  socket.on(""CS_REQ_registerdRiders"", () => {    io.sockets.emit(""SC_RES_registeredRiders"", JSON.stringify(registeredRiders));    console.log(""CS_REQ_registerdRiders:response send"");  });});

クライアント側はこんな感じ。

    socket.io test        

ただブラウザでテストするのはどうにもまどろっこしいので、コマンドラインから実行できるよう、ネット上で多く紹介されているwscatを使うことにしました。最初にハマったのは、wscatがwsに同梱されているのでは無く、wscatとして配布されていること。今のwsのレポジトリではwscatは実行できないようです。パスの問題でしょうか。で次にハマったのが、wscatでいくらnodeに接続しても接続が確立されずにhang upとなったり、無言となったりするという現象。いろいろ試してみた挙げ句、wscatではなくiocatを使うと接続に成功しました。iocatsocket.ioはメッセージ送信時にキーを付ける機能があったりしますので、そのあたりが通常のwebsocketとは互換性が無いのかもしれません。(2016/03/14追記)私が誤解していたようです。socket.ioはwebsocketの一実装だと思っていたのですが、そもそも違うプロトコルなんですね。リアルタイム双方向通信について“””

コメントをどうぞ

メールアドレスが公開されることはありません。 が付いている欄は必須項目です