文档章节

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

L3ve
 L3ve
发布于 2014/06/20 10:07
字数 692
阅读 4165
收藏 7

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



© 著作权归作者所有

共有 人打赏支持
L3ve
粉丝 10
博文 28
码字总数 14006
作品 0
浦东
程序员
【深入浅出Node.js系列十五】Nodejs实现websocket的4种方式

深入浅出Node.js系列 【深入浅出Node.js系列一】什么是Node.js 【深入浅出Node.js系列二】Node.js&NPM的安装与配置 【深入浅出Node.js系列三】深入Node.js的模块机制 【深入浅出Node.js系列四...

陶邦仁
2016/01/20
368
1
Hprose for Node.js 1.6.0 发布

Hprose 是一个先进的轻量级的跨语言跨平台面向对象的高性能远程动态通讯中间件。本项目是 Hprose 的 Node.js 版本实现。 特点: 跨语言,跨平台,支持 20 多种常用语言。 高效的序列化和反序...

andot
2015/06/23
980
0
nodejs v8.9.4 安装

一.安装 环境Centos7.3 64位 wget https://nodejs.org/dist/v8.9.4/node-v8.9.4.tar.gz cd node-v8.9.4/ ./configure --prefix=/usr/local/nodejs make make install 二.nodejs设置环境变量 ......

yaozhaosheng
06/26
0
0
Node.js+Socket.IO实现的WebSocket群聊天室源码

首先上图上实例 聊天室地址:http://chat.52itstyle.com WebSocket简介 谈到Web实时推送,就不得不说WebSocket。在WebSocket出现之前,很多网站为了实现实时推送技术,通常采用的方案是轮询 ...

小柒2012
2016/07/13
217
1
Socket总结 & node搭建简单的http服务器

网络中的进程 socket解决的是网络中进程间的通信,其首要解决的就是如何在网络中找到目标进程,这就要求进程拥有唯一性的索引,方便查找连接。 一台机器上,进程与进程之间通行,以PID作为唯...

烽穹寒渊
2016/08/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

angular 解决其他电脑不能访问的问题。

ng serve --host 0.0.0.0 --disable-host-check

miaojiangmin
今天
1
0
优酷视频文件怎么转换格式

  以前在优酷上下载视频都只是在手机上观看,但随着科技的发展,对于视频的要求也逐渐增多,不再只是观看视频那么简单,在精彩的部分还会将其单独分割出来,然后进行视频剪辑,可以做出我们...

萤火的萤火
今天
0
0
数据结构:散列

在一个数据结构中查找key元素,用顺序查找、二分查找都需要经过一系列关键之比较才能查找到结果,平均查找长度与数据量有关,元素越多比较次数就越多。 如果根据元素的关键字就能知道元素的存...

京一
今天
1
0
Apache RocketMQ 正式开源分布式事务消息

近日,Apache RocketMQ 社区正式发布4.3版本。此次发布不仅包括提升性能,减少内存使用等原有特性增强,还修复了部分社区提出的若干问题,更重要的是该版本开源了社区最为关心的分布式事务消...

阿里云云栖社区
今天
32
0
使用JavaScript和MQTT开发物联网应用

如果说Java和C#哪个是最好的开发语言,无疑会挑起程序员之间的相互怒怼,那如果说JavaScript是动态性最好的语言,相信大家都不会有太大的争议。随着越来越多的硬件平台和开发板开始支持JavaS...

少年不搬砖老大徒伤悲
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部