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

HTML一键打包EXE工具中使用Websocket

你是否曾好奇微信网页版为何能即时收到消息?为何在线游戏能实时同步玩家操作?这一切都要归功于一种名为WebSocket的技术。今天,我们就来聊聊这项让网页活起来的技术, 并且会附上示例代码,可以方便的通过html一键打包exe工具打包成一个桌面程序。

网址一键转成桌面程序HTML一键打包EXE程序

 

什么是WebSocket?

传统的HTTP协议像是写信,发送请求后等待回复,无法实现实时通信。而WebSocket则像是电话连线,一旦建立连接,双方可以随时互发信息,实现真正的实时双向通信。

WebSocket的典型应用场景

1. 即时通讯(微信网页版、在线客服系统)

2. 实时数据展示(实时监控)

3. 多人在线协作(腾讯文档、Google Docs)

4. 在线游戏(多人对战游戏)

5. 实时通知(新邮件、消息提醒)

简易网页聊天室代码

下面我们通过一个简单的聊天室示例,来看看WebSocket在实际中如何应用。

前端代码:

<!DOCTYPE html>
<html>
<head><title>WebSocket聊天室</title><style>#message-container {height: 300px;border: 1px solid #ccc;overflow-y: scroll;padding: 10px;margin-bottom: 10px;}.message {margin: 5px 0;}</style>
</head>
<body><div id="message-container"></div><input type="text" id="message-input" placeholder="输入消息..."><button onclick="sendMessage()">发送</button><script>// 建立WebSocket连接const socket = new WebSocket('ws://localhost:3000');// 连接建立时socket.onopen = function(event) {addMessage('系统', '已连接到聊天室');};// 接收消息socket.onmessage = function(event) {const data = JSON.parse(event.data);addMessage(data.user, data.message);};// 错误处理socket.onerror = function(error) {console.error('WebSocket错误:', error);};// 添加消息到界面function addMessage(user, message) {const container = document.getElementById('message-container');const messageElement = document.createElement('div');messageElement.className = 'message';messageElement.innerHTML = `<strong>${user}:</strong> ${message}`;container.appendChild(messageElement);container.scrollTop = container.scrollHeight;}// 发送消息function sendMessage() {const input = document.getElementById('message-input');const message = input.value.trim();if (message && socket.readyState === WebSocket.OPEN) {socket.send(JSON.stringify({user: '用户', // 实际应用中应该是登录用户名message: message}));input.value = '';}}// 回车发送消息document.getElementById('message-input').addEventListener('keypress', function(e) {if (e.key === 'Enter') {sendMessage();}});</script>
</body>
</html>

  

服务端代码

const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 3000 });// 存储所有连接的客户端
const clients = new Set();wss.on('connection', function connection(ws) {clients.add(ws);console.log('新用户连接,当前用户数:', clients.size);// 收到消息时广播给所有客户端ws.on('message', function incoming(message) {console.log('收到消息:', message.toString());// 广播消息给所有客户端clients.forEach(function each(client) {if (client.readyState === WebSocket.OPEN) {client.send(message.toString());}});});// 连接关闭时ws.on('close', function() {clients.delete(ws);console.log('用户断开连接,当前用户数:', clients.size);});
});console.log('WebSocket服务器运行在 ws://localhost:3000');

 

实现要点解析

1. 建立连接:前端通过new WebSocket(`与服务器建立连接

2. 事件监听:通过onopen、onmessage、onerror等事件处理连接状态

3. 发送数据:使用socket.send()方法发送消息

4. 广播机制:服务器收到消息后转发给所有连接的客户端

 

总结

WebSocket打破了HTTP协议的限制,为网页应用带来了真正的实时交互能力。从聊天应用到在线协作,从实时数据展示到多人在线游戏,WebSocket正在悄无声息地改变我们的网络体验。

http://www.wxhsa.cn/company.asp?id=5954

相关文章:

  • KUKA程序中DEF 与 DEFFCT 的区别
  • 第一天作业
  • EXE一机一码打包加密大师 - 打包加壳原理
  • 力扣62题 不同路径
  • 八皇后问题
  • 零知识证明中的专业漏洞解析
  • golang
  • 2025.9.16日软件工程学习日志
  • 2025ccpc南昌邀请赛感想+补题
  • img标签如何去除边框?
  • 25.9.16 java se大致了解后开始学习MySQL
  • C++ + OpenCV + Tesseract 实现英文数字验证码识别
  • Hadoop伪分布式hbase学习
  • Redis源码学习 -- 基本数据结构 -- Quicklist - -蓝蜗牛
  • 动态修改线程池参数
  • 力扣70题 爬楼梯
  • PHP(Laravel)+ ImageMagick + Tesseract 实现验证码识别
  • Windows下使用python + opencv读取含中文路径的图片 和 把图片数据保存到含中文路径下
  • 黑白世界
  • 在 PHP 中,$_GET
  • 在 ThinkPHP DB
  • 什么是网络+HTTP详解
  • 快速管理win系统上的用户
  • redis实现全局唯一id
  • 表格识别技术:“唤醒”沉睡在纸质文档中的海量结构化数据
  • 【大三下】资料,仅内部学习使用
  • fastboot工具的常见命令
  • 《软件需求最佳实践》阅读笔记一
  • 挖掘PDF生成器中的SSRF漏洞:从发现到利用
  • 做题记录 2