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 五.扩 ...
随机推荐
- NativeScript —— 初级入门(跨平台的手机APP应用)《一》
NativeScript简介 NativeScript是一个相当新的开源开发系统,几乎完全用JavaScript创建跨平台移动应用程序,带有一些可选的CSS和XML来简化显示布局的开发.您可以在htt ...
- textarea回填数据显示自适应高度
queryTextArea(){ var textAll = document.getElementById('templaInner').querySelectorAll("textare ...
- Phoenix批量提交优化,官网的demo
1 Phoenix的批量insert官网代码,最佳实践 try (Connection conn = DriverManager.getConnection(url)) { conn.setAutoC ...
- linux 命令技巧(转)--history
本文介绍一些关于bash的能够提高效率的技巧,主要是关于历史命令操作和一些快捷键,让你在命令行下工作效率翻倍. 1.history-----最基本的查看历史命令 2.!n-----编号为n的历史命令 ...
- 牛客小白月赛12 H 华华和月月种树 (离线dfs序+线段树)
链接:https://ac.nowcoder.com/acm/contest/392/H 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 131072K,其他语言2621 ...
- java poi 读取excel内容
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Row; import or ...
- Spring下的@Order和@Primary与javax.annotation-api下@Priority【Spring4.1后】等方法控制多实现的依赖注入(转)
@Order 可以作用在类.方法.属性. 影响加载顺序. 若不加,spring的加载顺序是随机的. @Primary 当注入bean冲突时,以@Primary定义的为准. @Order是控制配置类的加 ...
- 02 Vue介绍与安装,指令系统 v-*、音乐播放器
VUE文档 https://cn.vuejs.org/v2/guide/ 1.vue的介绍 尤雨溪 1.vue的优点 2.vue的介绍 3.vue的安装 4.声明式渲染 <body> &l ...
- pytorch tensor 维度理解.md
torch.randn torch.randn(*sizes, out=None) → Tensor(张量) 返回一个张量,包含了从标准正态分布(均值为0,方差为 1)中抽取一组随机数,形状由可变参数 ...
- hdu 6049 Sdjpx Is Happy
题: OwO http://acm.hdu.edu.cn/showproblem.php?pid=6049 (2017 Multi-University Training Contest - Team ...