1

我正在尝试将客户端应用程序(用 c++ 编写,尽管这不应该有任何影响)连接到使用 express 和 socket.io 编写的 node.js 服务器。

服务器几乎可以归结为:

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);

当我启动这个节点时,我尝试了两件事:

  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');

对于本机应用程序,您可以尝试使用已经实现的 Socket.IO-modules for C++

后者使用Boost。


如果我理解错了,请通过在新的连接试验上转储内部状态来发布一些调试信息。

于 2012-08-30T18:33:51.503 回答