WebSocket-nodejs实现
一、环境配置
1.下载安装nodejs https://nodejs.org/en/download/
2.安装完成后打开cmd命令,执行node --version,看看是否安装成功,如果提示没有此命令,去配置下环境变量,正常情况下安装后自动设置环境变量
二、配置nodejs模块
1.安装express模块
模块介绍:Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。
安装方式:在项目路径下执行npm install express
三、HelloWord
1.创建一个目录,作为项目目录
2.创建一个demo.js
var express = require('express'),//让其变为web模式
app = express(),
server = require('http').createServer(app);//引入http访问模式并绑定服务
server.listen(8000);//添加访问端口
app.get('/', function (req, res) {
res.send('Hello World');//当访问Ip:8000时,页面即可显示
})
3.在项目目录下按住shift右键,选择‘在此处打开命令窗口’执行node demo.js 未报错即启动成功
4.在浏览器访问ip:port即可输出
四、访问页面
1.在项目路径创建页面文件夹pages,并创建html页面a.html
2.在刚刚创建的demo.js中添加如下代码
var express = require('express'),//让其变为web模式
app = express(),
server = require('http').createServer(app);//引入http访问模式并绑定服务
server.listen(8000);//添加访问端口
app.use('/', express.static(__dirname + '/pages'));//绑定页面路径,在pages下创建a.html页面,可使用ip:8000/a.html访问到
//app.use('/', express.static(__dirname + '/pages1'));//可配置多路径,但默认会自上往下查找,找到后即返回,终止查找
app.get('/', function (req, res) {
res.send('Hello World');//当访问Ip:8000时,页面即可显示
})
3.重启后访问ip:port/a.html即可访问到该页面
五、引用其他js
1.在项目根目录创建include.js,内容如下
var hello = {
sayHello:function(name){
return 'hello,'+name+',this is include.js';
}
}
module.exports=hello;
2.在demo.js中添加
var express = require('express'),//让其变为web模式
app = express(),
include =require('./include.js'),//进入js
server = require('http').createServer(app);//引入http访问模式并绑定服务
server.listen(8000);//添加访问端口
app.use('/', express.static(__dirname + '/pages'));//绑定页面路径,在pages下创建a.html页面,可使用ip:8000/a.html访问到. "__dirname"为项目路径默认变量
app.get('/', function (req, res) {
res.send(include.sayHello("demo"));
})
3.请求ip:port即可看到内容
六、解析请求参数
1.在demo.js中添加后请求链接http://ip:port/?p1=p&p2=2
var express = require('express'),//让其变为web模式
app = express(),
url = require('url'),
server = require('http').createServer(app);//引入http访问模式并绑定服务
server.listen(8000);//添加访问端口
app.use('/', express.static(__dirname + '/pages'));//绑定页面路径,在pages下创建a.html页面,可使用ip:8000/a.html访问到. "__dirname"为项目路径默认变量
app.get('/', function (req, res) {
// 解析 url 参数
var params = url.parse(req.url, true).query;
res.write("网站名:" + params.p2);
res.write("\n");
res.write("网站 URL:" + params.p1);
res.end();
})
七、发送http请求
1.post
在demo.js中添加如下内容后访问http://mykl:8000/? parameter=2
var express = require('express'),//让其变为web模式
app = express(),
url = require('url'),
util = require('util'),
include =require('./include.js'),
server = require('http').createServer(app);//引入http访问模式并绑定服务
server.listen(8000);//添加访问端口
app.use('/', express.static(__dirname + '/pages'));//绑定页面路径,在pages下创建a.html页面,可使用ip:8000/a.html访问到. "__dirname"为项目路径默认变量
//app.use('/', express.static(__dirname + '/pages1'));//可配置多路径,但默认会自上往下查找,找到后即返回,终止查找
app.get('/', function (req, res) {
// 解析 url 参数
var params = url.parse(req.url, true).query;
post('https://cang.mini-kaola.cn/pages/MobileWeb/getStorageDatil.htm',{cangId: params.cangid},function(data){
res.write(data);
res.end();
});
})
function post(url,data,fn){
data=data||{};
var content=require('querystring').stringify(data);//获得请求的参数
var parse_u=require('url').parse(url,true);
var isHttp=parse_u.protocol=='http:';
var options={
host:parse_u.hostname,
port:parse_u.port||(isHttp?80:443),
path:parse_u.path,
method:'POST',
headers:{
'Content-Type':'application/x-www-form-urlencoded',
'Content-Length':content.length
}
};
var req = require(isHttp?'http':'https').request(options,function(res){//发送请求
var _data='';
res.on('data', function(chunk){
_data += chunk;
});
res.on('end', function(){
fn!=undefined && fn(_data);
});
});
req.write(content);
req.end();
}
2.get
在demo.js中添加如下内容后访问http://mykl:8000/?parameter=2
var express = require('express'),//让其变为web模式
app = express(),
http=require('http'),
url = require('url'),
include =require('./include.js'),
server = http.createServer(app);//引入http访问模式并绑定服务
server.listen(8000);//添加访问端口
app.use('/', express.static(__dirname + '/pages'));//绑定页面路径,在pages下创建a.html页面,可使用ip:8000/a.html访问到. "__dirname"为项目路径默认变量
//app.use('/', express.static(__dirname + '/pages1'));//可配置多路径,但默认会自上往下查找,找到后即返回,终止查找
app.get('/', function (req, res) {
// 解析 url 参数
var params = url.parse(req.url, true).query;
//get 请求外网
http.get("http://mykl/storage/pages/MobileWeb/getStorageDatil.htm?cangId="+params.cangid,function(req1,res1){
var html='';
req1.on('data',function(data){
html+=data;
});
req1.on('end',function(){
res.write(html);
res.end();
});
});
})
八、socket
1.安装socket模块
npm install socket.io
2.进入上一步安装的模块路径,找到socket.io.js
3.在page下创建一个html,并引用上面的js
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>socket</title>
</head>
<body>
<dev id="show"/>
<br/>
<input type="text" id="nickname"/>昵称<br/>
<input type="text" id="inmsg"/>
<input type="button" id="sendBtn" value="发送" />
<br/>
</body>
<script src="socket.io.js"></script>
<script src="jquery-1.11.3.min.js"></script>
<script>
$(function(){
var socket=io.connect();//与服务器进行连接
$('#sendBtn').click(function(){
var nickname = $('#nickname').val();
var fatext = $('#inmsg').val();
if(fatext!=""){
socket.emit('famsg', nickname+"-"+new Date().toTimeString().substr(0, 8)+":"+fatext+"<br/>");
}
});
socket.on('jiemsg', function(msg) {
$("#show").append(msg);
});
});
</script>
</html>
WebSocket-nodejs实现的更多相关文章
- websocket nodejs
Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. W ...
- websocket nodejs实例
http://blog.sina.com.cn/s/blog_49cc837a0101aljs.html http://blog.sina.com.cn/s/blog_49cc837a0101a2q3 ...
- websocket+nodejs+redis实现消息订阅和发布系统
其实我很懒,不想打字,代码已上传到码云,请点此处. 有疑问请一下扫描二维码,加我微信:
- webpack与browser-sync热更新原理深度讲解
本文首发于CSDN网站,下面的版本又经过进一步的修订.原文:webpack与browser-sync热更新原理深度讲解本文包含如下内容: webpack-hot-middleware EventSou ...
- 借助Nodejs探究WebSocket
文章导读: 一.概述-what's WebSocket? 二.运行在浏览器中的WebSocket客户端+使用ws模块搭建的简单服务器 三.Node中的WebSocket 四.socket.io 五.扩 ...
- WebSocket 学习(三)--用nodejs搭建服务器
前面已经学习了WebSocket API,包括事件.方法和属性.详情:WebSocket(二)--API WebSocket是基于事件驱动,支持全双工通信.下面通过三个简单例子体验一下. 简单开始 ...
- Nodejs websocket入门
websocket 2011年技术文档 http://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/index.html 浏览器端接 ...
- nodejs实现Websocket的数据接收发送
在去年的时候,写过一篇关于websocket的博文:http://www.cnblogs.com/axes/p/3586132.html ,里面主要是借助了nodejs-websocket这个插件,后 ...
- HTML5+NodeJs实现WebSocket即时通讯
声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 最近都在学习HTML5,做canvas游戏之类的,发现HTML5中除了canvas这个强大的工具外,还有WebSocket也很值得注意.可 ...
- Nodejs之WebSocket
文章导读: 一.概述-what's WebSocket? 二.运行在浏览器中的WebSocket客户端+使用ws模块搭建的简单服务器 三.Node中的WebSocket 四.socket.io 五.扩 ...
随机推荐
- 《Redis高阶应用》讲座总结
数据结构延展 常用数据结构:String,Hash,List,Set,Sorted Set(不聊这些) 高级数据结构:Bitmaps,hyperloglog,GEO 单机拓展到分布式 为什么要分区:性 ...
- maven入门--part2 安装
Maven安装和配置 (1)下载安装文件apache-maven-3.03-bin.tar (2)解压至安装目录,安装完毕 (3)修改.bash_profile,修改maven安装路径,修改构建GC配 ...
- python之字典一
字典的定义: 前面我们说过列表,它适合于将值组织到一个结构中并且通过编号对其进行引用.字典则是通过名字来引用值的数据结构,并且把这种数据结构称为映射,字典中的值没有特殊的顺序,都存储在一个特定的键(k ...
- 华硕B360主板装机找不到固态硬盘启动
1.开机点按F2进入BIOS中,在security选项卡中选择secure boot menu,secure boot control按Enter选择Disable,按F10保存: 2.电脑重 ...
- python函数:函数阶段练习
1.写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成批了修改的操作def modify_file(filename,old,new): import os with open(filena ...
- QT对话框
QFileDialog:文件对话框 QString fileName=QFileDialog::getOpenFileName(this,"打开文件", "/" ...
- Q&A(一)
1.四种常见的无监督式任务? 聚类.可视化.降维.关联规则学习 2.什么是核外学习? 核外算法可以处理计算机主内存无法应对的大量数据.它将数据分割成小批量,然后使用在线学习技术从这些小批量中学习. 3 ...
- iOS 环形进度条
.h文件 #import <UIKit/UIKit.h> @interface YTProgressView : UIView@property (nonatomic, copy) NSS ...
- tensorflow2.0编程规范
背景 tensorflow2.0 相比于1.0 有很大变化,1.0版本的placeholder,Session都没有了,2.0版本强推使用keras.keras是一个比较高层的api,确实挺好用的,一 ...
- 编译gpu集群版caffe
在这个版本安装之前,要先装好opencv,openmpi等. 下载地址:https://github.com/yjxiong/caffe.git 我的opencv是2.4.12版本 编译是用了: cm ...