文档章节

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

L3ve
 L3ve
发布于 2014/06/20 10:07
字数 692
阅读 4145
收藏 7
点赞 0
评论 0

最近项目终于可以缓缓,没有之前那么急,刚好也可以让我写下博客来记录一些用过的东西,让大家第一次上手的时候至少能比我少走弯路,我就已经高兴到哭了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 ⋅ 1

Hprose for Node.js 1.6.0 发布

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

andot ⋅ 2015/06/23 ⋅ 0

Node.js+Socket.IO实现的WebSocket群聊天室源码

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

小柒2012 ⋅ 2016/07/13 ⋅ 1

深入浅出Node.js_Index

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

陶邦仁 ⋅ 2016/01/07 ⋅ 0

让Node.js和C++一起搞基 ——2

  原文:http://xcoder.in/2014/04/03/nodejs-cpp-addons-2/   好,今天让我们更深入地搞基吧! 温故而知新,可以为湿矣   首先请大家记住这个 V8 的在线手册——http://izs.me/v8-do...

機巧死月不會寫代碼 ⋅ 2014/04/04 ⋅ 0

从Chrome源码看WebSocket

WebSocket是为了解决双向通信的问题,因为一方面HTTP的设计是单向的,只能是一边发另一边收。而另一方面,HTTP等都是建立在TCP连接之上的,HTTP请求完就会把TCP给关了,而TCP连接本身就是一个...

人人网FED ⋅ 05/27 ⋅ 0

C#网络编程系列文章(五)之Socket实现异步UDP服务器

原创性声明 本文作者:小竹zz 本文地址http://blog.csdn.net/zhujunxxxxx/article/details/44258719 转载请注明出处 文章系列目录 C#网络编程系列文章(一)之Socket实现异步TCP服务器 C#网络编...

zhujunxxxxx ⋅ 2015/03/15 ⋅ 0

【深入浅出Node.js系列十三】用Nodejs连接MySQL

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

陶邦仁 ⋅ 2016/01/19 ⋅ 0

Node.js学习路线图

Node.js学习路线图 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发。Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎。chrome浏览器就基...

萨斯辈的呼唤 ⋅ 2015/07/19 ⋅ 0

Node.js 0.6.11 稳定版发布

2012.02.17 Version 0.6.11 (stable) http: allow multiple WebSocket RFC6455 headers (Einar Otto Stangvik) http: allow multiple WWW-Authenticate headers (Ben Noordhuis) windows: su......

红薯 ⋅ 2012/02/18 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 52分钟前 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 7

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部