最近项目终于可以缓缓,没有之前那么急,刚好也可以让我写下博客来记录一些用过的东西,让大家第一次上手的时候至少能比我少走弯路,我就已经高兴到哭了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用来传输(个人理解,最好各位自己了解下,知道了也让我学习学习)