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 五.扩 ...
随机推荐
- .NET中跨线程访问winform控件的方法
1 第一种方式 MethodInvoker invoker = () => { richTextBox1.AppendText(_ClientSocketModelConnectedEvent. ...
- Excel中把图片合并进图表的方法介绍
方法一: 使用“图案”对话框 双击某个数据系列,选择“图案”标签,单击“填充效果”按钮,在“填充效果”对话框中选择“图片”标签,单击“选择图片”按钮,选择一个要使用的图形文件即可. 方法二: 使用剪贴 ...
- go语言中获取变量类型的三种方法
package main import ( "fmt" "reflect" ) func main() { var num float64 = 3.14 // ...
- ASP.NET实现验证码图片
新建一个checkcode.aspx文件,页面中不用写任何东西,在代码中,Page_Load中写入如下代码: string chkCode = string.Empty; int ix, ...
- 利用协程和socket实现并发
服务端代码 from gevent import monkey monkey.patch_all() from gevent import spawn import socket def commun ...
- python常用模块:sys、os、path、setting、random、shutil
今日内容讲了3个常用模块 一.sys模块二.os模块三.os下path模块四.random模块五.shutil模块 一.sys模块 import sys #环境变量 print(sys.path) # ...
- zencart新增分类点击不进去的解决办法
zencart批量表新增分类点击不进去的原因是安装了管理员权限分级模块,只要运行以下语句即可. INSERT INTO `admin_allowed_categories` (`categories_ ...
- SAP导出内表数据到excel
DATA: EXCEL TYPE OLE2_OBJECT, SHEET TYPE OLE2_OBJECT, CELL TYPE OLE2_OBJECT, ...
- p2456二进制方程 题解
题面描述:可以跳过 一个形如: X1X2…Xn=Y1Y2..Ym 的等式称为二进制方程. 在二进制方程的两边:Xi和Yj (1<=i<=n:1<=j<=m)是二进制数字(0.1 ...
- 谷歌插件学习笔记:把iframe干掉……
好久不写博客了,感觉自己变得越来越懒了,是没有时间吗?不是,是自己变得越来越懒了,好多东西不愿意去总结了,可能也是学的不精总结不出来什么玩意儿.不过,一切都是借口.还是坚持学习,坚持写博客吧,虽然写的 ...