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 节点遍历函数
Mar 28 Javascript
IE6弹出“已终止操作”的解决办法
Nov 27 Javascript
AeroWindow 基于JQuery的弹出窗口插件
Jun 27 Javascript
利用jquery的获取JS文件中的字符串内容
Feb 14 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
Aug 03 Javascript
Webpack打包慢问题的完美解决方法
Mar 16 Javascript
Vue通过input筛选数据
Oct 26 Javascript
详解.vue文件解析的实现
Jun 11 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
Dec 13 Javascript
vue倒计时刷新页面不会从头开始的解决方法
Mar 03 Javascript
VueJS实现用户管理系统
May 29 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
Nov 16 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版(5)
2006/10/09 PHP
drupal 代码实现URL重写
2011/05/04 PHP
php 阴历-农历-转换类代码
2012/01/16 PHP
php生成curl命令行的方法
2015/12/14 PHP
实例介绍PHP删除数组中的重复元素
2019/03/03 PHP
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
2008/11/03 Javascript
保证JavaScript和Asp、Php等后端程序间传值编码统一
2009/04/17 Javascript
js操作二级联动实现代码
2010/07/27 Javascript
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
jQuery下的动画处理总结
2013/10/10 Javascript
自己动手手写jQuery插件总结
2015/01/20 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
详解javascript事件冒泡
2016/01/09 Javascript
JavaScript中文件上传API详解
2016/04/01 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
Vue 实现v-for循环的时候更改 class的样式名称
2020/07/17 Javascript
前端 javascript 实现文件下载的示例
2020/11/24 Javascript
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
python类型强制转换long to int的代码
2013/02/10 Python
python聊天程序实例代码分享
2013/11/18 Python
Python实现Linux的find命令实例分享
2017/06/04 Python
Python利用BeautifulSoup解析Html的方法示例
2017/07/30 Python
TensorFlow saver指定变量的存取
2018/03/10 Python
python中的文件打开与关闭操作命令介绍
2018/04/26 Python
Python中一般处理中文的几种方法
2019/03/06 Python
python os模块简单应用示例
2019/05/23 Python
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
完美解决pycharm 不显示代码提示问题
2020/06/02 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
html5新特性与用法大全
2018/09/13 HTML / CSS
局部内部类是否可以访问非final变量?
2013/04/20 面试题
中国梦读书活动总结
2014/07/10 职场文书
redis 存储对象的方法对比分析
2021/08/02 Redis