WebSocket通过HTTP升级握手建立TCP上的持久双向通信,客户端用new WebSocket()连接并监听onopen/onmessage,服务端用ws库广播消息,需处理重连、心跳、鉴权等优化。

用 J*aScript 实现实时聊天应用,核心在于建立客户端与服务端之间的持久、双向通信通道——WebSocket 正是为此而生。它不像 HTTP 那样每次请求都要重新握手,而是建立一次连接后,双方可以随时互相发消息,延迟低、开销小。
WebSocket 协议在 TCP 之上,通过一次 HTTP 升级(Upgrade)握手完成连接建立。成功后,连接保持打开状态,客户端和服务端都能主动发送数据(文本或二进制),无需轮询或长连接模拟。
关键点:
HTML 中放一个输入框、一个发送按钮、一个消息列表容器:
立即学习“J*a免费学习笔记(深入)”;
<input id="msgInput" placeholder="输入消息"> <button id="sendBtn">发送</button> <div id="chatBox"></div>
J*aScript 初始化连接并处理交互:
情感家园企业站5.0 多语言多风格版
一套面向小企业用户的企业网站程序!功能简单,操作简单。实现了小企业网站的很多实用的功能,如文章新闻模块、图片展示、产品列表以及小型的下载功能,还同时增加了邮件订阅等相应模块。公告,友情链接等这些通用功能本程序也同样都集成了!同时本程序引入了模块功能,只要在系统默认模板上创建模块,可以在任何一个语言环境(或任意风格)的适当位置进行使用!
0
查看详情
const ws = new WebSocket('ws://localhost:8080');
ws.onopen = () => {
console.log('已连接到聊天服务器');
};
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
const p = document.createElement('p');
p.textContent = `[${msg.user}]: ${msg.text}`;
docum
ent.getElementById('chatBox').appendChild(p);
document.getElementById('chatBox').scrollTop = document.getElementById('chatBox').scrollHeight;
};
ws.onerror = (err) => console.error('WebSocket 错误:', err);
ws.onclose = () => console.log('连接已关闭');
document.getElementById('sendBtn').onclick = () => {
const input = document.getElementById('msgInput');
const text = input.value.trim();
if (text && ws.readyState === WebSocket.OPEN) {
ws.send(JSON.stringify({ user: '游客', text }));
input.value = '';
}
};
安装依赖:npm install ws
创建 server.js:
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
// 存储所有连接的客户端(简单场景可用数组,生产环境建议用 Map 或 Redis)
const clients = new Set();
wss.on('connection', (ws, req) => {
console.log('新用户连接');
clients.add(ws);
ws.on('message', (data) => {
try {
const msg = JSON.parse(data);
// 广播给所有客户端(包括自己),也可排除发送者
clients.forEach(client => {
if (client.readyState === WebSocket.OPEN) {
client.send(JSON.stringify({
user: msg.user || '匿名',
text: msg.text || ''
}));
}
});
} catch (e) {
console.error('消息解析失败:', e);
}
});
ws.on('close', () => {
console.log('用户断开');
clients.delete(ws);
});
});
console.log('WebSocket 服务运行在 ws://localhost:8080');
运行:node server.js,前端即可连接。
原生 WebSocket 功能精简,实际项目中常需补充能力:
基本上就这些。WebSocket 本身不复杂,但容易忽略错误处理、连接状态管理和消息可靠性。从原生入手理解原理,再过渡到成熟方案,是稳妥的路径。
以上就是如何用J*aScript实现一个实时聊天应用_WebSocket如何建立双向通信?的详细内容,更多请关注其它相关文章!
# 多语言
# 南庄勒流网站建设
# 如何优化旅游的网站建设
# 宜昌百度seo服务
# 网站推广去哪里找
# 了解深圳网站优化推广
# 东莞移动seo网站优化代码
# 品牌整合营销推广策划
# 正规seo优化业务
# 飞鸟风度和黑帽seo
# 辽阳网站建设优化平台
# 加载
# 后端
# 如何实现
# 有何
# 使用它
# javascript
# 递归
# 如何用
# 客户端
# 服务端
# a
# 防火墙
# npm
# node
# json
# node.js
# 前端
# js
# html
# redis
# java
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
《KARDS》冬季扩展包“国土阵线”上线!全新“协力”机制改变战场格局
实时数据流中高效查找最小值与最大值
如何在CSS中使用伪类:valid实现表单验证提示_结合:valid改变边框颜色
LINUX怎么查看显卡信息_LINUX查看GPU状态
c++如何实现观察者设计模式_c++行为型设计模式实战
J*aScript对象中深度嵌套URL键的查找与更新策略
《盗墓笔记手游》技能介绍
泰拉瑞亚网页版在线登录入口 泰拉瑞亚官方正版入口
《图怪兽》退出登录方法
三星M34录音变声问题_Samsung M34麦克风调整
江苏大剧院会员卡购买步骤
顺丰官方查单号入口 顺丰快递单号查询官网入口
《画加》约稿流程
J*aScript 数值去小数位处理:多种方法与实践
手机坏了微信聊天记录怎么导出来 新手机恢复聊天记录技巧
嘴唇干裂起皮怎么办 唇部护理与预防干裂的方法【详解】
iPhone12是否要更新ios16
《via浏览器》强制缩放网页设置方法
123网页端官方登录页 123邮箱网页版即时通讯服务
DeepSeek超全面指南:入门必看
如何在mysql中设计餐饮点餐系统_mysql点餐系统项目实战
哔哩哔哩在线观看入口 B站官网免费进入
Safari浏览器自动填表功能失效怎么办 Safari表单管理修复
windows10怎么开启wsl_windows10安装linux子系统教程
J*aScript字符串_Unicode处理
wps文字怎么设置文字环绕图片的方式_wps文字如何设置文字环绕图片方式
《王者荣耀世界》英雄获取攻略
解决CSS background 属性中 cover 关键字的常见误用
喜茶GO更换登录账号方法
使用document.execCommand实现Web文本编辑器加粗/取消加粗
J*aScript深度克隆:实现高效、健壮与安全的复杂对象复制
使用 .htaccess 正确配置 WordPress 子目录重定向与路径保留
动漫岛在线动漫网 动漫岛动漫在线观看官方入口
PointNet++语义分割模型中类别变更引发的断言错误及标签处理策略
搜狗浏览器如何查找页面中的文字 搜狗浏览器Ctrl+F页面搜索功能
iPhone14无法连接蓝牙设备如何解决
一点万象签到领积分指南
优化长HTML属性值:SonarQube警告与实用策略
知音漫客官网首页入口_知音漫客热门漫画推荐
Lar*el Socialite单设备登录策略:实现用户唯一会话管理
12306售票时间最新规定 | 网上订票和车站窗口时间一样吗
如何在Podman容器中运行Composer_Docker替代品Podman的PHP与Composer容器化实践
Lar*el怎么实现全文搜索_Lar*el Scout集成Algolia教程
怎样让Windows 11的开始菜单恢复经典样式_Open-Shell工具使用指南【怀旧】
windows10怎么更改下载路径_windows10默认存储位置修改教程
OPPO手机参数配置如何开启护眼模式_OPPO手机参数配置护眼模式开启指南
qq邮箱怎么注册_QQ邮箱注册步骤与注意事项
WPS长文档分栏排版不乱方法_WPS分栏+分节符报纸排版教程
windows10怎么设置电源按钮_windows10按下电源键功能修改
漫蛙manwa官网浏览入口_漫蛙漫画网页版访问链接
2025-12-20
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。