1
我正在尝试将使用express编写的node.js服务器连接到客户端应用程序(用C++编写,尽管应该没有任何影响) socket.io。使用socket.io将应用程序连接到节点服务器
服务器几乎可以归结为:
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);
当我火了这个节点我要做两件事情:
- 我尝试用浏览器连接。这意味着它会触发apt.get('/'...),但它不会触发io.sockets.on('connection'...),这是意想不到的,这让我感到怀疑,我误解了一些东西。
- 我启动我的C++应用程序并调用TCP套接字连接。套接字连接并让我发送数据,但我从来没有得到任何迹象表明节点端发生了什么(并且我从来没有收到任何数据)。 io.sockets.on('connection'...)永远不会被触发,并且不会出现有关格式错误的消息的错误。
所以我的问题是:我误解了sockets.io的设置或功能?我如何将我的应用程序连接到此节点服务器?
谢谢!
你的第二个建议与我正在尝试做的事情是一致的......但是,说实话,我宁愿不要拉升或任何大的事情(不要误会我的意思,在大多数情况下,我爱情提升)。是不是可以使用一个简单的套接字库来建立一个普通的旧的TCP连接并与节点服务器通信? – WestleyArgentum
那么https://github.com/ebshimizu/socket.io-clientpp呢?这应该做到这一点。主要问题是Socket.io的概念。没有“套接字库”。 Socket.io使用WebSockets(主协议)并实现Adobe Flash套接字,JSONP轮询和AJAX长轮询。也就是说,您可以使用专用的WebSocket模块(例如https://github.com/LearnBoost/websocket.io,这将是一种干净的方法),也可以使用全功能的Socket.io客户端框架。但是,如果您喜欢真正快速且功能全面的功能,并且广泛支持平台支持,则应使用Faye。 –
嘿,我想我的误解在于我可以在不使用websocket的情况下创建一个简单的tcp连接。非常感谢您的帮助。 我认为我要向前迈进的方式是制作一个http服务器和一个网络服务器,它们监听不同的端口,然后调用相同的功能(它们每个都需要一些功能)......只是好奇心,你知道这是否是一种常见的方法吗? – WestleyArgentum