⼩程序webSocket的使⽤⽅法
博客简介
本篇博客介绍⼩程序中webSocket的使⽤⽅法,以及如何⽤局部⽹络建⽴webSocket连接,进⾏客户端服务器之间的对话:
webSocket简介
⼩程序端API调⽤
服务器端使⽤nodejs配置
演⽰websocket
webSocket简介
WebSocket 是 HTML5 开始提供的⼀种在单个 TCP 连接上进⾏全双⼯通讯的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成⼀次握⼿,两者之间就直接可以创建持久性的连接,并进⾏双向数据传
输。在 WebSocket API 中,浏览器和服务器只需要做⼀个握⼿的动作,然后,浏览器和服务器之间就形成了⼀条快速通道。两者之间就直接可以数据互相传送。
现在,很多⽹站为了实现推送技术,所⽤的技术都是 Ajax 轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然⽽HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很⼩的⼀部分,显然这样会浪费很多的带宽等资源。HTML5 定义的 WebSocket 协议,能更好的节省服务器资源和带宽,并且能够更实时地进⾏通讯。
⼩程序端API调⽤
⼩程序端需要做的配置有:
获取局部⽹络的地址
tSocket创建⼀个 WebSocket 连接。
监听 WebSocket 连接打开事件
wx.sendSocketMessage(Object object) 连接发送数据。
消息事件
(1)获取局部⽹络的地址IP
获取局部⽹络的IP⼗分简单,打开设置,进⼊⽹络,点击WiFi属性,在IPv4右侧就能看见IP地址然后,在IP的前⾯加上ws://尾部加上3001得到可⽤的IP:
例如:
ws://199.213.7.102:3001
(2)建⽴客户端和服务器的链接,并且发送消息,监听服务器回发消息
在wxml部分设置⼀个按钮,⽤来获取信息亲切发送消息:
WXML:
<input type="tex" bindchange="sendMessage" class="text" placeholder="请输⼊消息"></input> JS部分建⽴客户端和服务器的链接,并且发送消息,监听服务器回发消息:
//本地服务器地址
var wsApi = "ws://199.213.7.102:3001";
var socketOpen==false;
sendMessage:function(e)
{
var msg=e.detail.value;
if (socketOpen) {
console.log(msg);
//向服务器发送消息
wx.sendSocketMessage({
data: msg
})
}
},
onLoad: function (options) {
//建⽴连接
url: wsApi,
header: {
'content-type': 'application/json'快乐大本营打码
},
//method:"GET",
protocols: ['protocol1'],
success: function () {
console.log("客户端连接成功!");
console.log('webSocket已打开!');
socketOpen=true;
console.log(msg);
胡歌发长文
})
})
}
})
},
服务器端使⽤nodejs配置
服务器这⾥⽤的是nodejs来配置,当然你也可以⽤其他后端语⾔来处理。假设你已经安装好了nodejs,那么我们开始吧:
创建nodejs环境
引⼊ws模块的构造函数并且实例化
监听前端发送的消息
回发消息
(1)创建nodejs环境
⾸先新建⼀个⽂件夹websocket
林正英僵尸电影全集window+R,输⼊cmd
输⼊cd 空格后将websocket直接拖拽到⿊框内(或者cd 路径)进⼊websocket⽂件夹
接着输⼊npm install ws建⽴环境
回车之后就能看到⽬录下⽣成了⽂件,环境就⽣成完毕,接下来就要写服务端的代码了
在websocket下创建⼀个⽂件server.js,⽤来编写nodejs代码,⾸先我们要引⼊ws模块的构造函数并且实例化:
引⼊ws模块的构造函数并且实例化:
/
/引⼊ws模块的构造函数
var webSocketServer=require("ws").Server;
//实例化
var wss=new webSocketServer({
port:3001
});
(3)监听前端发送的消息
继续编写server.js,监听前端发送的消息:
<(“connection”,function(ws)
疫情开始的时间
<(“message”,function(msg)
//引⼊ws模块的构造函数
var webSocketServer=require("ws").Server;
//实例化
var wss=new webSocketServer({
port:3001
});
//监听客户端连接
<("connection",function(ws){
console.log("服务器连接建⽴成功");
//监听客户端消息
<("message",function(msg){
console.log(msg);
ws.send("来⾃客户端的消息:"+msg);
})
});
(4)回发消息
服务器接收消息之后,还要具备回发消息的能⼒,给客户端反馈消息,⾄于返回什么消息,不是我们这⾥要讨论的,我们直接简单的将客户发送的消息回发回去即可:
ws.send(“来⾃客户端的消息:”+msg)
//引⼊ws模块的构造函数
var webSocketServer=require("ws").Server;
//实例化
var wss=new webSocketServer({
port:3001
三国上将
});
//监听客户端连接
巨龙之魂副本入口
<("connection",function(ws){
console.log("服务器连接建⽴成功");
//监听客户端消息
<("message",function(msg){
console.log(msg);
ws.send("来⾃客户端的消息:"+msg);
})
});