2017-07-31 29 views
0

私は単純なsocket.io websocketサーバーをテストしようとしています。コマンドラインでsocket.ioをテストするために見つけたツールはiocatでした。このサーバーで何が問題になっていますか?

サーバー:

var io = require('socket.io')(12345); 

io.on('connection', function(socket){ 
    console.log('a user connected'); 
    socket.on('disconnect', function(){ 
    console.log('user disconnected'); 
    }); 

    socket.on('test', function(msg){ 
    console.log('test msg: ' + msg); 
    io.emit('test', 'Test answer'); 
    }); 
}); 

私はnode socket.jsコマンドでそれを開始し、このマシン上で実行されている任意のWebサーバを無効に。

これは機能しました。サーバーは接続と切断イベントにOKを答えたが、「試験」のメッセージのためではない:

[email protected]:~/prj/client$ iocat --socketio ws://localhost:12345 
> test 
> asdfasdf 
> 

サーバーの応答:

[email protected]:~/prj/client$ node socket.js 
a user connected 
user disconnected 
a user connected 
user disconnected 

は、任意の理由を知っていますか?私はhttps、ApacheのプロキシとサブURLに私のWebサーバーを配置したいので、コマンドラインテスターを好むだろう。だから、私はそれに赤ちゃんが足を踏み入れていることを確認したい。何も干渉していない。

+0

サーバーに何も問題ありません。私の修正された答えは以下のように、あなたのクライアントは 'test'ではなく' message'のメッセージ名を送信しているので、あなたのサーバはそれを見ません。 – jfriend00

答えて

1

あなたはsocket.ioサーバーを持っているようですが、webSocketコマンドラインユーティリティを使用して通信しようとしています。

socket.ioサーバーは、ベースレベルのトランスポートとしてカバーの下にwebSocketを使用しますが、webSocketの上にレイヤーを追加するため、ソケットを使用して接続を完了してデータを交換するためにsocket.ioクライアントが必要です.ioサーバー。だから、

だから、
socket.io server <==> socket.io client 
webSocket server <==> webSocket client 

、あなたは利用可能ないくつかのWebSocketモジュールのいずれかを使用してだけのWebSocketサーバーにダウンし、サーバーダムできますsocket.ioサーバと通信するためsocket.ioクライアントを必要としますか、 nodejsのために。今の質問はiocatを適切に使用する方法についての質問変身したこと


の回答の新しい部分、。

socket.ioメッセージには、メッセージ名とメッセージデータの2つの部分があります。 iocatを使用すると、データのみが送信されます(デフォルトのメッセージ名はmessage)。 -eオプションを使用して、送信するメッセージ名を「テスト」に設定する必要があるようです。または、iocatが使用するデフォルトのメッセージ名messageを聞くようにサーバーを変更します。 iocatでは、各送信時にメッセージ名とメッセージデータを直接指定することはできません。

+0

あなたが答えると、私はその質問を編集していました。私は現在iocatを使用しています。これはsocket.ioをサポートしていますが、動作しませんでした。 –

+0

@NelsonTeixeira - 私は 'iocat'について何も知らない - 私は図書館の作者が書いた本当のsocket.ioクライアントを使い、このような問題はない。私は、通常のsocket.ioライブラリを使用すると、接続URLに初期接続確立の一部であるさまざまなクエリパラメータがあることを知っています。実際のsocket.ioクライアントライブラリを使用して、10行のsocket.ioクライアントを作成するだけの理由はありますか?ブラウザ用またはnode.jsアプリ用に作成できます。それは私が物事をテストしたいときに行うことです。次に、あなたはデバッグしていない/ iocatを持っています。 – jfriend00

+0

私がコマンドラインテストをしたいのは、Apacheのプロキシ、サブURL、httpsの後ろで使いたいので、コマンドラインでさまざまな設定をテストしたいからです。 :) –

関連する問題