当前位置: 首页 > news >正文

js实现websocket服务端和客户端

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。

文章目录

  • 一、nodejs环境
  • 二、js客户端
  • 三、js服务端
    • 1. 初始化
    • 2. 安装ws
    • 3. 创建文件server.js作为服务器
  • 四、测试
    • 1. 启动服务器
    • 2. 启动客户端
    • 3. 测试


一、nodejs环境

安装node.js
配置nodejs的环境
参考文章:nodejs下载安装配置

二、js客户端

创建文件client.html

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title>websocket测试</title>		</head><body><button onclick="sendMessage()">发消息给服务器</button></body>
</html>
<!-- <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> -->
<script type="text/javascript"> // 打开一个 web socket,设定websocket服务器地址和端口const ws = new WebSocket("ws://127.0.0.1:8888/");//开启连接open后客户端处理方法ws.onopen = function(event){// Web Socket 已连接上,在页面中显示消息//   document.getElementById('res').innerHTML="当前客户端已经连接到websocket服务器";console.log('websocket已连接')};// 点击按钮时给websocket服务器端发送消息// $('#btn').click(function(){// 	var value = $('#demo').val();//     console.log(value)// 	ws.send(value);// })// 接收消息后客户端处理方法ws.onmessage = function (event) { //接收到服务端的消息后,输出打印收到消息的内容console.log('收到服务端回复的消息:'+event.data);//   $('#res').text(evt.data);};// 关闭websocketws.onclose = function(event){ // 关闭 websocketalert("连接已关闭..."); };//发送给服务端的消息内容function sendMessage(){ws.send("hello server, I am client")}</script>

三、js服务端

1. 初始化

输入命令执行初始化

npm init -y

在这里插入图片描述
执行后会出现一个josn文件
在这里插入图片描述

2. 安装ws

打开终端输入命令安装ws

npm install ws

在这里插入图片描述
然后会多出一个node_modules的文件夹,用来放引入的ws包
在这里插入图片描述

3. 创建文件server.js作为服务器

const http = require('http');
const websocket = require('ws');const server = http.createServer();
const wss = new websocket.Server({server});//绑定事件,建立连接
wss.on('connection',(socket)=>{console.log('websocket已连接');//收到客户端发来的消息socket.on('message',(message)=>{//打印收到的消息console.log('收到客户端发来的消息:'+message);//收到后返回消息给客户端socket.send('hello client, I am server, I received')});socket.on('close', ()=>{console.log('websocket连接已关闭');});
});server.on('request', (request, response)=>{response.writeHead(200, {'Content-Type':'text/plain'});response.end('Hello,world1111!');
});server.listen(8888, ()=>{console.log('服务已启动,端口号为8888');
});

四、测试

1. 启动服务器

终端启动sever.js作为服务器

node server.js

在这里插入图片描述

2. 启动客户端

打开client.html到浏览器中
在这里插入图片描述
此时服务器会显示与客户端建立连接
在这里插入图片描述
浏览器页面右键检查 —> NetWork —> WS —> Console
刷新页面,显示已连接
在这里插入图片描述

3. 测试

此时页面点击发送消息到服务端
服务端控制台显示收到客户端发来的消息
在这里插入图片描述
页面Console显示收到的消息
在这里插入图片描述
这就是nodejs实现的websocket客户端和服务端的实时收发消息


感谢阅读,祝君暴富!

http://www.lryc.cn/news/168129.html

相关文章:

  • qt qml RadioButton如何设置字体颜色,style提示找不到怎么办?
  • Docker 的使用
  • 【无公网IP内网穿透】Java支付宝沙箱环境支付,SDK接口远程调试
  • axios 用formData的方式请求数据
  • Mapbox加载arcgis的底图
  • (20)线程安全问题:Lock,双锁问题,Monitor,死锁
  • 医院如何实现安全又稳定的跨网文件数据交换呢?
  • 关于老项目从JDK8升级到JDK17所需要注意的细节
  • 《C++ primer》练习3.43-3.45: 打印二维数组的元素
  • 使用电力系统稳定器 (PSS) 和静态 VAR 补偿器 (SVC) 提高瞬态稳定性(Matlab代码实现)
  • 开源项目-SeaTunnel-UI数据集成系统
  • 百度SEO优化策略与经验分享(提升百度排名的8大步骤)
  • 【深度学习】- NLP系列文章之 1.文本表示以及mlp来处理分类问题
  • 力扣236 补9.14
  • 一文搞定Postman(菜鸟必看)
  • 位图+布隆过滤器+海量数据并查集(它们都是哈希的应用)
  • MYSQL:Select语句顺序
  • Pytest系列-数据驱动@pytest.mark.parametrize(7)
  • 【Qt】QGroundControl入门2:下载、编译、错误处理、运行
  • 【深度学习】Pytorch 系列教程(十):PyTorch数据结构:2、张量操作(Tensor Operations):(4)索引和切片详解
  • 2024字节跳动校招面试真题汇总及其解答(三)
  • 基于springboot+vue的便利店信息管理系统
  • 在ubuntu18.04上编译C++版本jsoncpp/opencv/onnxruntime且如何配置CMakelist把他们用起来~
  • 大二上学期学习计划
  • 【python爬虫—星巴克产品】
  • shell SQL 变量 Oracle shell调用SQL操作DB
  • 【校招VIP】java线程池考点之核心线程数
  • [每周一更]-(第61期):Rust入门策略(持续更新)
  • 线程安全问题的原因及解决方案
  • 基于matlab中点放炮各类地震波时距曲线程序