node.js系列之TCP(socket通讯)与HTTP搞基

最近项目终于可以缓缓,没有之前那么急,刚好也可以让我写下博客来记录一些用过的东西,让大家第一次上手的时候至少能比我少走弯路,我就已经高兴到哭了T.T...(废话了那么多,开工)

不久前,老板跟我说要用socket和他的服务器对接,之前弄过websocket所以就一心想到那上面去了.

但其实websocket是建立在HTTP上的,可是一般的软件通讯都是用TCP的,所以我只能开始我的查询资料之旅.

其实TCP和HTTP的socket都是大同小异,因为我后台用的是node.js所以都有包可以直接用.HTTP的npm下socket.io.而TCP的就npm下net.(其实这2个东东使用都很简单,我都在犹豫要不要写这篇文章呢).

大神就直接看着个API就好了:net的API   (里面已经够简单够详细了,好过看我的臭文章).

不过还是有些同修喜欢直接,那我就贴上我的代码:

客户端代码

var net = require('net');                    
var client = new net.Socket();                         //前面这2句就不用介绍了
client.connect(6000, "127.0.0.1");                     //端口号 + 服务器的IP

client.on('data', function (data) {                    //接受返回的数据,回调
    console.log('!!!!!!!!:' + data);
});

client.on('error', function (exception) {              //错误回调
    console.log('socket error:' + exception);
//    client.end();
});

服务端代码:

ps:好吧,我也比较懒,只是直接在API里复制的...大家还是去看API好了..

var net = require('net');
var server = net.createServer(function(c) { //'connection' listener
  console.log('server connected');
  c.on('end', function() {
    console.log('server disconnected');
  });
  c.write('hello\r\n');
  c.pipe(c);
  });
  server.listen(端口号, function() { //'listening' listener
     console.log('server bound');
  });


=======================可爱的分割线===============================

上述已经完成了项目的需要,下面的部分是可看可不看的东东.

这里我想到一个问题,我现在的项目是用node.js做web应用,每个网页的客户端都是经过web服务器来进行TCP连接通讯,这样的话,可以说每个web客户端都可以当作同一个客户端在和TCP服务端通讯,TCP服务端除非在传送的数据里添加识别数据,要不然就是一对一的关系,TCP服务端无法识别是哪个web客户端,在进行通讯.

找 找 找资料 ----找到一个好资料 ----敬个礼 握握手----你是我的好资料--------------

找了很多东西还是没看到类似的,之后在Stack Overflow找到了.

直接给链接 : Create WebSockets between a TCP server and HTTP server in node.js

大致的做法就是:在HTTPsocket里的用TCPsocket传送,HTTP用来链接.TCP用来传输(个人理解,最好各位自己了解下,知道了也让我学习学习)



你可能感兴趣的:(node.js系列之TCP(socket通讯)与HTTP搞基)