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 相关文章推荐
写了10年的Javascript也未必全了解的连续赋值运算
Mar 25 Javascript
javascript中方便增删改cookie的一个类
Oct 11 Javascript
Javascript页面添加到收藏夹的简单方法
Aug 07 Javascript
Javascript中拼接大量字符串的方法
Feb 05 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
Mar 21 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
Dec 14 Javascript
js使用highlight.js高亮你的代码
Aug 18 Javascript
vue.js 实现点击展开收起动画效果
Jul 07 Javascript
jQuery事件blur()方法的使用实例讲解
Mar 30 jQuery
vue中实现Monaco Editor自定义提示功能
Jul 05 Javascript
vscode中Vue别名路径提示的实现
Jul 31 Javascript
vue3.0生命周期的示例代码
Sep 24 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 广告调用类代码(支持Flash调用)
2011/08/11 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
Javascript模板技术
2007/04/27 Javascript
基于jQuery的星级评分插件
2011/08/12 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
2015/01/07 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
2016/05/17 Javascript
JS实现重新加载当前页面或者父页面的几种方法
2016/11/30 Javascript
nodejs redis 发布订阅机制封装实现方法及实例代码
2016/12/15 NodeJs
Vue2.0实现购物车功能
2017/06/05 Javascript
vue自定义指令directive实例详解
2018/01/17 Javascript
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
2018/05/22 Javascript
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
jQuery实现的导航条点击后高亮显示功能示例
2019/03/04 jQuery
微信小程序scroll-view的滚动条设置实现
2020/03/02 Javascript
Node.JS如何实现JWT原理
2020/09/18 Javascript
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
Python模块学习 re 正则表达式
2011/05/19 Python
python3实现域名查询和whois查询功能
2018/06/21 Python
基于tensorflow加载部分层的方法
2018/07/26 Python
Python初学者常见错误详解
2019/07/02 Python
利用pyecharts实现地图可视化的例子
2019/08/12 Python
python web框架 django wsgi原理解析
2019/08/20 Python
基于pandas中expand的作用详解
2019/12/17 Python
Selenium及python实现滚动操作多种方法
2020/07/21 Python
Python常用扩展插件使用教程解析
2020/11/02 Python
如何利用python正则表达式匹配版本信息
2020/12/09 Python
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
canvas像素画板的实现代码
2018/11/21 HTML / CSS
html5 Canvas绘制线条 closePath()实例代码
2012/05/10 HTML / CSS
木工主管岗位职责
2013/12/08 职场文书
2014年母亲节演讲稿范文
2014/05/07 职场文书
导游词300字
2015/02/13 职场文书
保研专家推荐信范文
2015/03/25 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
python实现简单聊天功能
2021/07/07 Python