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

我是节点的新手,我想创build一个客户端和服务器之间使用node.js的TCP连接。 我已经有一个build立在节点上的HTTP服务器,它向客户端发送/从客户端发送/接收数据。 现在,我需要添加这个“连接”的概念。

我一直在阅读教程和论坛,我有点困惑。 如果我理解的很好,有两种方法可以创build这种连接:

  • 将我现有的http服务器升级到socket.IO服务器

    var app = require('http').createServer(handler); var io = require('socket.io').listen(app); function handler(req, res){ //code } app.listen(8080); 
  • 创build一个基于networking模块的单独的TCP服务器,然后build立这个TCP服务器和HTTP服务器之间的连接,就像这里所build议的那样在node.js中的TCP服务器和HTTP服务器之间创buildWebSockets

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

那么,我们什么时候需要创build两个单独的TCP和HTTP服务器,什么时候我们只需要一个服务器(将HTTP服务器升级到一个socket.IO)呢?

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

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

WebSocket与TCP连接没有任何关系(除了他们使用它们)。 如果你只是打开一个普通的TCP连接,内置的net包就是你要找的。

Socket.IO是一个RPC包,它使用WebSockets或其他传输(如长轮询JSON)的模拟WebSocket。