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 去除数组的重复元素
May 04 Javascript
Ubuntu 11.10 安装Node.js的方法
Nov 30 Javascript
js限制textarea每行输入字符串长度的代码
Oct 31 Javascript
非html5实现js版弹球游戏示例代码
Sep 22 Javascript
Chrome扩展页面动态绑定JS事件提示错误
Feb 11 Javascript
自己动手写的jquery分页控件(非常简单实用)
Oct 28 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
Jul 06 Javascript
js 中获取制定的cook信息实现方法
Nov 19 Javascript
概述javascript在Google IE中的调试技巧
Nov 24 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
Mar 25 jQuery
微信小程序中遇到的iOS兼容性问题小结
Nov 14 Javascript
详解vue组件之间的通信
Aug 30 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中的Traits
2015/07/29 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
javascript setTimeout()传递函数参数(包括传递对象参数)
2010/04/07 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
2015/06/19 Javascript
初识Javascript小结
2015/07/16 Javascript
nodeJs爬虫获取数据简单实现代码
2016/03/29 NodeJs
Window.Open打开窗体和if嵌套代码
2016/04/15 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
2016/04/21 Javascript
js修改onclick动作的四种方法(推荐)
2016/08/18 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
关于NodeJS中的循环引用详解
2019/07/23 NodeJs
layer弹窗在键盘按回车将反复刷新的实现方法
2019/09/25 Javascript
JQuery使用数组遍历跳出each循环
2020/09/01 jQuery
Python中处理字符串之isalpha()方法的使用
2015/05/18 Python
python访问mysql数据库的实现方法(2则示例)
2016/01/06 Python
简单谈谈Python中的几种常见的数据类型
2017/02/10 Python
python opencv实现图片旋转矩形分割
2018/07/26 Python
python读取文本中的坐标方法
2018/10/14 Python
Python面向对象之继承和多态用法分析
2019/06/08 Python
django做form表单的数据验证过程详解
2019/07/26 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
Pycharm安装第三方库失败解决方案
2020/11/17 Python
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
阿联酋彩妆品牌:OUD MILANO
2019/10/06 全球购物
优质服务演讲稿
2014/05/14 职场文书
2014世界杯球队球队口号
2014/06/05 职场文书
个人授权委托书范本格式
2014/10/12 职场文书
焦裕禄观后感
2015/06/03 职场文书
地道战观后感300字
2015/06/04 职场文书
Win11 BitLocker 驱动器加密
2022/04/19 数码科技
ORACLE中dbms_output.put_line输出问题的解决过程
2022/06/28 Oracle