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 相关文章推荐
js获取div高度的代码
Aug 09 Javascript
jquery 应用代码 方便的排序功能
Feb 06 Javascript
js获取当前页面的url网址信息
Jun 12 Javascript
Javascript控制div属性动态变化实例分析
Oct 08 Javascript
AngularJS学习笔记(三)数据双向绑定的简单实例
Nov 08 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
Dec 15 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
Dec 21 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
Mar 09 Javascript
ES6基础之展开语法(Spread syntax)
Feb 21 Javascript
jQuery属性选择器用法实例分析
Jun 28 jQuery
你或许不知道的一些npm实用技巧
Jul 04 Javascript
p5.js绘制旋转的正方形
Oct 23 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访问查询mysql数据的三种方法
2006/10/09 PHP
PHP判断浏览器、判断语言代码分享
2015/03/05 PHP
PHP+MySQL实现的简单投票系统实例
2016/02/24 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
2016/04/11 PHP
php输出反斜杠的实例方法
2019/09/19 PHP
用javascript自动显示最后更新时间
2007/03/15 Javascript
date.parse在IE和FF中的区别
2010/07/29 Javascript
JS中动态添加事件(绑定事件)的代码
2011/01/09 Javascript
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
JavaScript中setMonth()方法的使用详解
2015/06/11 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
Node.js中常规的文件操作总结
2016/10/13 Javascript
基于Bootstrap框架实现图片切换
2017/03/10 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
2017/03/20 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
vue-cli之router基本使用方法详解
2017/10/17 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
JavaScript之解构赋值的理解
2019/01/30 Javascript
taro开发微信小程序的实践
2019/05/21 Javascript
vue实现简单学生信息管理
2020/05/30 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
2020/06/19 Javascript
详解Python中字符串前“b”,“r”,“u”,“f”的作用
2019/12/18 Python
python3实现将json对象存入Redis以及数据的导入导出
2020/07/16 Python
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
2013/02/17 面试题
人力资源经理自我评价
2014/01/04 职场文书
致垒球运动员加油稿
2014/02/16 职场文书
环保建议书
2014/03/12 职场文书
财政专业大学生职业生涯规划书
2014/09/17 职场文书
领导班子党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
小学副班长竞选稿
2015/11/21 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
Python实现滑雪小游戏
2021/09/25 Python