単純なNode.js双方向クライアント\サーバー通信チャネルで作業しており、サーバーでsocket.ioを使用し、クライアントでsocket.io-clientを使用しようとしています。
以下にコードを挿入しました。これは非常に基本的なものであり、複雑さを最小限に抑えるために、両方をローカルマシンで実行しています。
私が見ている動作は次のとおりです。
- サーバーを起動します。
- サーバーは「サーバー開始」をコンソールに記録します。
- クライアントを起動します。
- クライアントログ「サーバーの準備ができました!」
- 他に何も起こりません...
私が期待するのは、サーバーが「クライアントの準備ができました!」をログに記録することです。メッセージとコンテンツ(「受信準備完了」)。
WireSharkを使用して回線をスニッフィングしましたが、クライアントが設計どおりにメッセージを送信しているように見えますが、サーバーのコールバックは起動していません。
Express v3.1.0、socket.io v0.9.13、socket.io-client v0.9.11(すべてnpm経由でインストール)でノードv0.8.4を実行しています。
これがサーバーコードです...
var http = require('http'),
express = require('express'),
app = express(),
server = http.createServer(app);
app.configure(function(){
app.use(express.static(__dirname + '/public'));
});
server.listen(8080);
console.log("Server started");
var io = require('socket.io').listen(server);
io.sockets
.on('connection', function(socket){
socket.emit('server ready', { msg: 'ready' }) ;
})
.on('comms', function(content) {
console.log('Client is ready!');
console.log(content);
});
そして、これがクライアントコードです...
var clientio = require('socket.io-client');
var socket = new clientio.connect('http://localhost', { port: 8080 });
socket
.on('server ready', function(data){
console.log('Server is ready!');
socket.emit('comms', 'Ready received');
})
.on('connect-error', function(error) {
console.log('Connection Error\n' + error);
})
.on('error', function(error) {
console.log('Socket Error\n' + error);
})
socket.ioとsocket.io-clientの両方のドキュメントと例は、多少混乱していて(慈善的であるため)、少し動いているターゲットのように見えます...しかし、私が言えることから、これはうまくいくはずです。
私がどこで間違っているのかについて誰かが私にアドバイスをくれることを望んでいますか?