在node:socket.io或net模块中创建客户端 - 服务器TCP连接

时间:2013-12-11 19:07:21

标签: node.js tcp socket.io httpserver

我是节点的新手,我想使用node.js在客户端和服务器之间创建TCP连接。我已经在节点上构建了一个http服务器,它可以向客户端发送数据或从客户端发送数据。现在,我需要添加这种“连接”导向的概念。

我一直在阅读教程和论坛,我有点困惑。 如果我理解得很好,有两种方法可以建立这种联系:

  • 将我已经存在的http服务器升级到socket.IO服务器

    var app = require('http').createServer(handler);
    var io = require('socket.io').listen(app);
    function handler(req, res){
       //code
    }
    app.listen(8080);
    
  • 基于网络模块创建单独的TCP服务器,然后在此TCP服务器和http服务器之间建立连接,如Create WebSockets between a TCP server and HTTP server in node.js

    var net = require('net');
    net.createServer(function (socket) {
       socket.write('Hello World!\r\n');
       socket.end();
     }).listen(1337);
    

那么,我们何时需要创建2个独立的TCP和HTTP服务器,何时需要只有一个服务器(将HTTP服务器升级到socket.IO)?

2 个答案:

答案 0 :(得分:11)

WebSockets与TCP连接没有任何关系(除了他们使用它们之外)。如果您只是想打开常规的TCP连接,那么内置的net包就是您所需要的。

Socket.IO是一个RPC包,它使用WebSockets或模拟WebSockets而不是其他传输,例如长轮询JSON。

答案 1 :(得分:3)

如果您的客户端是浏览器,那么您唯一的选择是使用WebSockets(socket.io提供了这样的实现)。

浏览器没有可用于打开原始TCP套接字的API,这是网络模块为您提供的。