首先简单介绍一下什么是websocket
一、WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)
首先HTTP有1.1和1.0之说,也就是所谓的keep-alive,把多个HTTP请求合并为一个,但是Websocket其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容现有浏览器的握手规范而已,也就是说它是HTTP协议上的一种补充可以通过这样一张图理解
有交集,但是并不是全部。
另外Html5是指的一系列新的API,或者说新规范,新技术。Http协议本身只有1.0和1.1,而且跟Html本身没有直接关系。。
通俗来说,你可以用HTTP协议传输非Html数据,就是这样=。=
再简单来说,层级不一样。
二、Websocket是什么样的协议,具体有什么优点
首先,Websocket是一个持久化的协议,相对于HTTP这种非持久的协议来说。
简单的举个例子吧,用目前应用比较广泛的PHP生命周期来解释。
1) HTTP的生命周期通过Request来界定,也就是一个Request 一个Response,那么在HTTP1.0中,这次HTTP请求就结束了。
在HTTP1.1中进行了改进,使得有一个keep-alive,也就是说,在一个HTTP连接中,可以发送多个Request,接收多个Response。
但是请记住 Request = Response , 在HTTP中永远是这样,也就是说一个request只能有一个response。而且这个response也是被动的,不能主动发起。
好了具体就先讲到这里,大家是不是急着看代码了?那就请往下看
用node.js配置websocket
1.首先,自然是去官网下载node.js的安装包(百度node.js即可)
2.下载完成之后,自然就是安装了,安装完成之后呢
3.先来测试看看有没有安装成功:打开cmd–然后输入 node -v 如下图
如果有版本号,那么就是安装成功了!
4.接下来依然使用的是cmd 在控制器面板输入 npm install ws 如下图
出现版本号说明安装成功
5.接下来可先测试一下是否可以使用
服务器端代码
var WebSocketServer = require('C:/Users/Administrator/node_modules/ws').Server,
wss = new WebSocketServer({ port: 8080 });
wss.on('connection', function (ws) { console.log("收到测试");
ws.on('message', function (message) { console.log('1111') console.log(message);
});
});123456789
在小程序上依然可以使用;
接下来上客户端代码
WebSocket
12345678
var ws = new WebSocket("ws://127.0.0.1:8080/");
ws.onopen = function() {
alert("Opened");
ws.send("0000000");
};
ws.onmessage = function (evt) {
alert(evt.data);
};
ws.onclose = function() {
alert("Closed");
};
ws.onerror = function(err) {
alert("Error: " + err);
};123456789101112131415161718
你们可以把他们整合到一起,这个看你们自己的!
那么就会有人说了,怎么看效果呢,别急接下来就是同样打开你的cmd用node打开你刚才写好的服务端的位置,如下图
然后你就可以打开你的客户端的网页了,效果就出来了
这个就是效果
既然可以使用了,说明环境没问题了,接下来看在小程序如何使用了
我为了方便就用button按钮发起请求了
wxml代码
websocket链接1
js代码
Page({
data:{
path:''
},
onLoad:function(opt){
},
websocket:function(){
var msg="你猜"
var socketOpen=true
wx.connectSocket({
url: 'ws://127.0.0.1:8080/'
})
wx.onSocketOpen(function(res){
wx.sendSocketMessage({
data:msg
})
})
wx.onSocketMessage(function(res) {
console.log(res.data)
})
}
})1234567891011121314151617181920212223
注意在微信上用的时候可以先测试一下,然后在服务端加一个返回数据的函数(那个函数就在我发的代码中,但是不在服务端,你们好好看看就会发现的),剩下就没什么可说的,这是最简单的了,如果要深入的说,那是说不完的,好了,不懂可以在下方评论!