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 相关文章推荐
图片按比例缩放函数
Jun 26 Javascript
比较搞笑的js陷阱题
Feb 07 Javascript
解决3.01版的jquery.form.js中文乱码问题的解决方法
Mar 08 Javascript
js简单实现Select互换数据的方法
Aug 17 Javascript
jquery 中toggle的2种用法详解(推荐)
Sep 02 Javascript
使用BootStrapValidator完成前端输入验证
Sep 28 Javascript
Angular2学习笔记——详解NgModule模块
Dec 02 Javascript
vuex state及mapState的基础用法详解
Apr 19 Javascript
Vue 动态设置路由参数的案例分析
Apr 24 Javascript
js如何找出字符串中的最长回文串
Jun 04 Javascript
vue 实现数字滚动增加效果的实例代码
Jul 06 Javascript
通过实例解析JavaScript常用排序算法
Sep 02 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
一些PHP Coding Tips(php小技巧)[2011/04/02最后更新]
2011/05/02 PHP
php文件上传、下载和删除示例
2020/08/28 PHP
PHP基于回溯算法解决n皇后问题的方法示例
2017/11/07 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
2020/03/18 PHP
js实现单一html页面两套css切换代码
2013/04/11 Javascript
浅析js中取绝对值的2种方法
2013/07/09 Javascript
Javascript学习笔记之函数篇(五) : 构造函数
2014/11/23 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
基于JS实现密码框(password)中显示文字提示功能代码
2016/05/27 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
2016/06/21 Javascript
BootStrap 弹出层代码
2017/02/09 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
2017/05/02 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
2018/03/05 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
2018/05/01 Javascript
在Layui中实现开关按钮的效果实例
2019/09/29 Javascript
java遇到微信小程序 &quot;支付验证签名失败&quot; 问题解决
2019/12/22 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
2020/01/21 Javascript
JavaScript常用进制转换及位运算实例解析
2020/10/14 Javascript
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
Python入门之modf()方法的使用
2015/05/15 Python
Python常用的文件及文件路径、目录操作方法汇总介绍
2015/05/21 Python
基于python时间处理方法(详解)
2017/08/14 Python
Python基础语言学习笔记总结(精华)
2017/11/14 Python
tensorflow输出权重值和偏差的方法
2018/02/10 Python
解决Python安装后pip不能用的问题
2018/06/12 Python
Python用5行代码写一个自定义简单二维码
2018/10/21 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
2019/06/19 Python
Python进阶:生成器 懒人版本的迭代器详解
2019/06/29 Python
Python大数据之从网页上爬取数据的方法详解
2019/11/16 Python
中粮集团旗下食品网上购物网站:我买网
2016/09/22 全球购物
实习求职信
2013/12/01 职场文书
会计工作心得体会
2014/01/13 职场文书
党员干部廉洁承诺书
2014/05/28 职场文书
大学生万能检讨书范例
2014/10/04 职场文书
2015公务员年度考核评语
2015/03/25 职场文书
Matplotlib绘制条形图的方法你知道吗
2022/03/21 Python