【问题标题】:Connecting an application to a node server using socket.io使用 socket.io 将应用程序连接到节点服务器
【发布时间】:2012-08-30 18:20:02
【问题描述】:

我正在尝试将客户端应用程序(用 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 的设置或功能?如何将我的应用程序连接到此节点服务器?

谢谢!

【问题讨论】:

    标签: c++ node.js express socket.io


    【解决方案1】:

    首先,您是否在客户端包含特定于模块的 socket.io 库? 您是否连接到正确的套接字/端点?

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

    对于原生应用,你可以尝试使用已经实现的Socket.IO-modules for C++

    后者使用 Boost。


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

    【讨论】:

    • 您的第二个建议与我正在尝试做的事情一样......但是,老实说,我宁愿不要拉升压或任何大的东西(不要误会我的意思,在大多数情况下,我喜欢提升)。是不是不能用一个简单的socket库来建立一个普通的老tcp连接,和node服务器通信?
    • github.com/ebshimizu/socket.io-clientpp 怎么样?那应该这样做。主要问题是 Socket.io 的概念。没有“套接字库”。 Socket.io 使用 WebSockets(主要协议)并实现 Adob​​e Flash 套接字、JSONP 轮询和 AJAX 长轮询。也就是说,您可以使用专用的 WebSocket 模块(例如 github.com/LearnBoost/websocket.io,这将是一种干净的方法),或者功能齐全的 Socket.io-client 框架。但是,如果您喜欢真正快速、功能齐全以及平台支持得到广泛支持的东西,您应该使用 Faye。
    • 嘿,我想我的误解在于认为我可以在不使用 websockets 的情况下建立一个简单的 tcp 连接。非常感谢您的帮助。我认为我要前进的方式是制作一个 http 服务器和一个 net 服务器,它们在不同的端口上侦听,然后调用相同的函数(它们每个都需要一些函数)......只是出于好奇,你知道这是否是一种常见的方法吗?
    猜你喜欢
    • 1970-01-01
    • 2022-11-15
    • 2015-05-20
    • 1970-01-01
    • 2017-01-05
    • 2014-10-03
    • 2021-01-28
    • 1970-01-01
    • 2021-04-21
    相关资源
    最近更新 更多