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 相关文章推荐
JavaScript confirm选择判断
Oct 18 Javascript
jQuery UI 应用不同Theme的办法
Sep 12 Javascript
拥抱模块化的JavaScript
Mar 07 Javascript
js定时调用方法成功后并停止调用示例
Apr 08 Javascript
jquery 插件实现瀑布流图片展示实例
Apr 03 Javascript
JS实现队列与堆栈的方法
Apr 21 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
Jul 06 Javascript
jQuery webuploader分片上传大文件
Nov 07 Javascript
在js代码拼接dom对象到页面上去的模板总结(必看)
Feb 14 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
Apr 22 Javascript
小程序和web画三角形实现解析
Sep 02 Javascript
JavaScript canvas动画实现时钟效果
Feb 10 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
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
php生成二维码不保存服务器还有下载功能的实现代码
2018/08/09 PHP
javascript静态的url如何传递
2007/05/03 Javascript
不用ajax实现点击文字即可编辑的方法
2007/12/16 Javascript
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
javascript中返回顶部按钮的实现
2015/05/05 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
简单理解vue中el、template、replace元素
2016/10/27 Javascript
微信小程序 跳转传参数与传对象详解及实例代码
2017/03/14 Javascript
Angular在模板驱动表单中自定义校验器的方法
2017/08/09 Javascript
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
JS中的事件委托实例浅析
2018/03/22 Javascript
小程序实现五星点评效果
2018/11/03 Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
2018/12/11 jQuery
详解用Webpack与Babel配置ES6开发环境
2019/03/12 Javascript
JS中的算法与数据结构之集合(Set)实例详解
2019/08/20 Javascript
JavaScript实现图片轮播特效
2019/10/23 Javascript
微信小程序网络请求实现过程解析
2019/11/06 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
2019/11/12 Javascript
JavaScript实现简单计算器功能
2019/12/19 Javascript
[07:06]2018DOTA2国际邀请赛寻真——卫冕冠军Team Liquid
2018/08/10 DOTA
详解Python验证码识别
2016/01/25 Python
一个Python最简单的接口自动化框架
2018/01/02 Python
python实现傅里叶级数展开的实现
2018/07/21 Python
详解Python中的内建函数,可迭代对象,迭代器
2019/04/29 Python
解决Django中checkbox复选框的传值问题
2020/03/31 Python
为什么是 Python -m
2020/06/19 Python
python实现简单的tcp 文件下载
2020/09/16 Python
一家专门做特卖的网站:唯品会
2016/10/09 全球购物
总经理岗位职责
2013/11/09 职场文书
学校评语大全
2014/05/06 职场文书
就业协议书样本
2014/08/20 职场文书
村官2015年度工作总结
2015/10/14 职场文书
详解Oracle块修改跟踪功能
2021/11/07 Oracle
实战Python爬虫爬取酷我音乐
2022/04/11 Python