node.js中ws模块创建服务端和客户端,网页WebSocket客户端


Posted in Javascript onMarch 06, 2019

首先下载websocket模块,命令行输入

npm install ws

1.node.js中ws模块创建服务端

// 加载node上websocket模块 ws;
var ws = require("ws");
// 启动基于websocket的服务器,监听我们的客户端接入进来。
var server = new ws.Server({
 host: "127.0.0.1",
 port: 6080,
});
// 监听接入进来的客户端事件
function websocket_add_listener(client_sock) {
 // close事件
 client_sock.on("close", function() {
 console.log("client close");
 });
 // error事件
 client_sock.on("error", function(err) {
 console.log("client error", err);
 });
 // end 
 // message 事件, data已经是根据websocket协议解码开来的原始数据;
 // websocket底层有数据包的封包协议,所以,绝对不会出现粘包的情况。
 // 每解一个数据包,就会触发一个message事件;
 // 不会出现粘包的情况,send一次,就会把send的数据独立封包。
 // 如果我们是直接基于TCP,我们要自己实现类似于websocket封包协议就可以完全达到一样的效果;
 client_sock.on("message", function(data) {
 console.log(data);
 client_sock.send("Thank you!");
 });
 // end 
}
// connection 事件, 有客户端接入进来;
function on_server_client_comming (client_sock) {
 console.log("client comming");
 websocket_add_listener(client_sock);
}
server.on("connection", on_server_client_comming);
// error事件,表示的我们监听错误;
function on_server_listen_error(err) {
}
server.on("error", on_server_listen_error);
// headers事件, 回给客户端的字符。
function on_server_headers(data) {
 // console.log(data);
}
server.on("headers", on_server_headers);

2.node.js中ws模块创建客户端

var ws = require("ws");
// url ws://127.0.0.1:6080
// 创建了一个客户端的socket,然后让这个客户端去连接服务器的socket
var sock = new ws("ws://127.0.0.1:6080");
sock.on("open", function () {
 console.log("connect success !!!!");
 sock.send("HelloWorld1");
 sock.send("HelloWorld2");
 sock.send("HelloWorld3");
 sock.send("HelloWorld4");
 sock.send(Buffer.alloc(10));
});
sock.on("error", function(err) {
 console.log("error: ", err);
});
sock.on("close", function() {
 console.log("close");
});
sock.on("message", function(data) {
 console.log(data);
});

3.网页客户端创建(使用WebApi --->WebSocket)

<!DOCTYPE html>
<html>
<head>
 <title>skynet websocket example</title>
</head>
<body>
 <script>
 var ws = new WebSocket("ws://127.0.0.1:6080/index.html");
 ws.onopen = function(){
 alert("open");
 ws.send("WebSocket hellowrold!!");
 };
 ws.onmessage = function(ev){
 alert(ev.data);
 };
 ws.onclose = function(ev){
 alert("close");
 };
 ws.onerror = function(ev){
 console.log(ev);
 alert("error");
 };
 </script>
</body>
</html>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Javascript 相关文章推荐
理解JSON:3分钟课程
Oct 28 Javascript
JavaScript省市联动实现代码
Feb 15 Javascript
深入理解bootstrap框架之第二章整体架构
Oct 09 Javascript
PHP+jquery+ajax实现分页
Dec 09 Javascript
JS异步文件上传(兼容IE8+)
Apr 02 Javascript
微信小程序 开发之全局配置
May 05 Javascript
原生javascript实现的全屏滚动功能示例
Sep 19 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
Sep 19 jQuery
node打造微信个人号机器人的方法示例
Apr 26 Javascript
JS中appendChild追加子节点无效的解决方法
Oct 14 Javascript
微信小程序实现两边小中间大的轮播效果的示例代码
Dec 07 Javascript
利用React Router4实现的服务端直出渲染(SSR)
Jan 07 Javascript
node.js中express模块创建服务器和http模块客户端发请求
Mar 06 #Javascript
微信小程序性能优化之checkSession的使用
Mar 06 #Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
Mar 06 #Javascript
移动端(微信等使用vConsole调试console的方法
Mar 05 #Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
Mar 05 #Javascript
深入理解Puppeteer的入门教程和实践
Mar 05 #Javascript
[jQuery] 事件和动画详解
Mar 05 #jQuery
You might like
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
2016/10/18 PHP
laravel 获取当前url的别名方法
2019/10/11 PHP
php实现JWT(json web token)鉴权实例详解
2019/11/05 PHP
用js实现键盘方向键翻页功能的代码
2007/06/03 Javascript
网页源代码保护(禁止右键、复制、另存为、查看源文件)
2012/05/23 Javascript
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
2013/01/11 Javascript
javascript中的window.location.search方法简介
2013/09/02 Javascript
各浏览器对document.getElementById等方法的实现差异解析
2013/12/05 Javascript
js添加select下默认的option的value和text的方法
2014/10/19 Javascript
js简单实现竖向tab选项卡的方法
2015/05/04 Javascript
Bootstrap基本布局实现方法详解
2016/11/25 Javascript
vuejs手把手教你写一个完整的购物车实例代码
2017/07/06 Javascript
jquery在vue脚手架中的使用方式示例
2017/08/29 jQuery
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
MUI 实现侧滑菜单及其主体部分上下滑动的方法
2018/01/25 Javascript
JavaScript数据结构之栈实例用法
2019/01/18 Javascript
JS判断浏览器类型与操作系统的方法分析
2020/04/30 Javascript
解决vant-UI库修改样式无效的问题
2020/11/03 Javascript
[01:04:06]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第一局
2016/02/26 DOTA
python语言使用技巧分享
2016/05/31 Python
Python排序算法实例代码
2017/08/10 Python
Linux下python与C++使用dlib实现人脸检测
2018/06/29 Python
Django 限制用户访问频率的中间件的实现
2018/08/23 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
2018/11/01 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
tensorflow安装成功import tensorflow 出现问题
2020/04/16 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
Python lxml库的简单介绍及基本使用讲解
2020/12/22 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
PHP中如何创建和修改数组
2012/05/02 面试题
化学教师教学反思
2014/01/17 职场文书
世界卫生日宣传活动总结
2015/02/09 职场文书
银行柜员工作心得体会
2016/01/23 职场文书