1

Express と socket.io を使用して記述された node.js サーバーに、クライアント側アプリケーション (C++ で記述されていますが、影響はありません) を接続しようとしています。

サーバーは次のように要約されます。

var express = require('express');
var http = require('http')

var app = express();
var server = http.createServer(app)
var io = require('socket.io').listen(server);

app.use(express.cookieParser());
app.use(express.session({
  ...
}));
app.use(app.router);

// response handling -------
app.get('/', function(req, res){
  console.log('request get /');
});

io.sockets.on('connection', function(socket) {
  console.log('sockets.io connection!');
});
// -------

port = 3000
app.listen(port);
console.log('Listening on port: ' + port);

このノードを起動すると、次の 2 つのことを試します。

  1. ブラウザで接続してみます。これは、apt.get('/' ...) をトリガーするという意味で機能しますが、予期しない io.sockets.on('connection' ...) をトリガーしません。何かを誤解している。
  2. C++ アプリケーションを起動し、tcp ソケットで connect を呼び出します。ソケットが接続され、データを送信できるようになりますが、ノード側で何かが発生したことを示す兆候はまったくありません (また、データが返されることはありません)。io.sockets.on('connection' ...) は起動されず、不正なメッセージに関するエラーは発生しません。

私の質問は、sockets.io のセットアップまたは機能を誤解していませんか? アプリケーションをこのノード サーバーに接続するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

1

まず、モジュール固有の socket.io ライブラリをクライアントに含めますか? 正しいソケット/エンドポイントに接続していますか?

io.connect('http://localhost');

ネイティブ アプリケーションの場合、既に実装されているC++ 用の Socket.IO モジュールを使用してみることができます。

後者はブーストを使用します。


何か問題があることがわかった場合は、新しい接続試行で内部状態をダンプして、デバッグ情報を投稿してください。

于 2012-08-30T18:33:51.503 に答える