利用node之socket搭建简单聊天室

使用Node.js + socket.io搭建基于HTML5的在线聊天室 开发环境 1、Node.js (1)安装Node.js 安装Node.js:http://nodejs.cn/download/ Node.js官方文档:http://nodejs.cn/ (2)安装相关组件 socket.io:npm install socket.io socket.io中文学习文档:https://zhuanlan.zhihu.com/p/29148869 2... 阅读详情

一、理解socket

socket是client和server进行连接,消息传送的桥梁;

这里写图片描述


二、 node中server的socket

node通过net.createServer((socket) => {})创建server,其中回调函数的参数为socket,建立连接后即可使用socket;

const net = require('net');

//创建一个socket服务器
const server = net.createServer((socket) => {
    // 建立连接后触发以下程序
    console.log('建立连接');
    socket.write('hello client');

    socket.on('data', (data) => {
        console.log(data.toString());
    })
    socket.on('end', () => {
        console.log('连接中断');
    })
});

server.on('error', (err) => {
    throw err;
})

server.listen(2080, '127.0.0.1', () => {
    console.log('server监听成功');
})



三、node中client的socket

client通过net.createConnection({port: 2080, host: ‘127.0.0.1’}, () => {});创建client,这个client就是socket

const net = require('net');

const client = net.createConnection({port: 2080, host: '127.0.0.1'}, () => {
   // 客户端创建连接之后触发
    console.log('客户端连接成功');
    // 通过socket给server发送消息
    client.write('hello server');
})

client.on('data', (data) => {
    // 通过socket接受server的消息
    console.log(data.toString());
    client.end();
})
client.on('end', () => {
    console.log('连接中断');
})


四、在shell中使用

这里写图片描述
这里写图片描述



五、server端进行广播(http协议雏形)

思路:1、定义数据格式,利用json字符串进行传递;
对于多个客户端,用数组sockets剩放所有client连接;
在server.js中:

const net = require('net');

//存储所有连接的client
const sockets = [];

// 创建一个socket服务器
const server = net.createServer((socket) => {
   sockets.push(socket);
   function boardcast(from, message){
       sockets.forEach((element) => {
           element.write(`你好呀${from}, 你说的是${message}`);
       });
   }

    socket.on('data', (chunk) => {
        //规定chunk的数据结构为: {portocal: 'boardcast', from: 'client', message: 'hello'}
        try {
            var data = JSON.parse(chunk);
            switch(data.portocal){
                case 'boardcast': 
                console.log('收到消息');
                boardcast(data.from, data.message);// 有任何客户端发消息都会有触发,对每个client进行广播
                break;
                default:  socket.write('你说的格式我不识别');
            }
        } catch (error) {
            console.log(error);
        }    
    })
});

const port = 2080;

// 监听一个特定的端口
server.listen(port, (err) => {
    // 监听端口成功后调用,如果监听失败则是端口被调用
    if (err){
        console.log('端口被占用');
        return false;
    }
    console.log(`server成功监听${port}`);
})

在client.js中

const net = require('net');

const signal = {"portocal": "boardcast", "from": "jinghong", "message": "hello"};

const client = net.createConnection({port: 2080, host: '127.0.0.1'}, () => {
    console.log('client已经连接');
    client.write(JSON.stringify(signal));
});

client.on('data', (data) => {
   console.log(data.toString());
})
client.on('end', () => {
    console.log('连接关闭');
})

运行测试:打开一个终端运行server.js;多个终端运行client;

这里写图片描述

别再只懂概念了!用Node.js + Socket.io手把手搭建一个WebRTC视频聊天室(附完整源码) 本文详细介绍了如何使用Node.js和Socket.io从零搭建一个WebRTC视频聊天室,涵盖项目架构设计、信令服务器实现、媒体设备访问和连接流程等核心内容。通过完整的代码示例和实战指南,帮助开发者掌握WebRTC技术的实际应用,解决常见问题并优化性能。 阅读详情

相关推荐

WebRTC聊天室搭建实战 :Node.js + Socket.io+vue 完整前后端代码 复制就能跑

上周上线了一个小工具,想做个纯浏览器端点对点聊天,原本以为挺简单,结果 WebRTC 信令 + 数据通道配置那叫一个繁琐,最后还是靠 撑起来的信令通道,才算跑通了整个流程。趁热打铁,把这套“前后端 + WebRTC + Socket.io 的文字聊天室”代码整理成了一个完整 DEMO,想快速入门 WebRTC 的朋友,直接复制都能用。项目很简单,两个文件搞定一切: 二、前端代码(public/index.html) 🔧 功能概览: 输入房间 ID,即可加入聊天室。 第一个进入房间的用户为 ini

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 411

Node实现 Socket 通信

本篇讲的是在线聊天系统的基础,即socket通信,通过socket可以实现客户端之间的通信,如像日常使用的QQ,微信一样的实现通信,那么本篇就通过Node.js中的Socket来实现通信效果,之后会有篇目讲WebSocket和Socket.io;

灵魂学者的博客 3236

论文理解【LLM-OR】—— 【PaMOP】Guiding Large Language Models in Modeling Optimization Problem

针对 LLM 求解运筹优化任务,PaMOP 通过约束划分树分离子问题,实现复杂优化问题的分块建模,并结合求解器反馈与反向翻译一致性检查迭代纠错,降低子任务复杂度,提升可执行率与建模准确性。

佚失的诗篇 1007

【小沐学前端】nodejs实现socket网络通信

本节内容如下:1、简介2、UDP2.1 接收端2.2 发送端后记 1、简介 在NodeJS中有三种socket:1. TCP,2. UDP,3. Unix域套接字。 UDP/datagram sockets Class: dgram.Socket Event: ‘close’ Event: ‘connect’ Event: ‘error’ Event: ‘listening’ Event: ‘message’ socket.addMembership(multicastAddress[, multicas.

爱看书的小沐 7675

Windows下Python多版本共存与切换的终极指南(含环境变量详解)

本文详细解析了在Windows系统下实现Python多版本共存与切换的完整方案。通过深入讲解环境变量Path的底层机制,提供了从安装策略、精细化Path管理到创建快速切换脚本的实战指南,并介绍了py启动器和虚拟环境等高级技巧,帮助开发者彻底解决版本冲突问题,提升开发效率。

v6b7n8m9q0的博客 537

【实战指南】基于YOLOv11的肺结节检测系统开发与优化(LUNA2016数据集)

本文提供了基于YOLOv11模型和LUNA2016数据集开发肺结节检测系统的完整实战指南。详细介绍了从环境搭建、数据预处理、模型训练与优化,到构建Web应用系统的全流程,旨在帮助开发者快速掌握医疗影像AI项目的核心开发技能。

weixin_29031057的博客 140

深入探究node搭建socket服务器

自从上篇中sokect实现了视频通话,但是是使用ws依赖库实现的服务端,所以最近再看ws源码,不看不知道,一看很惊讶。接下来一点点记录一下,如何搭建一个简易的服务端socket,来实现上次的视频通讯。

qq_44859233的博客 2370

lattice 黑盒子的生成和使用(Creating Your Own Black Box Modules)

很多客户,特别是外包项目,需要做黑盒子,防止他人看到源码,那么这就需要对相关的源码打包加封了。diamond help 说的也是模糊模糊的,这次给出实际验证过的流程。 1.先将要加封的模块间一个工程,建好工程,写好代码之后,模块名字叫做crosslink(这个使用黑盒子的时候要用),代码如下: module crosslink( output wire[3:0] led, input wire clk, input wire reset ); reg [29:0] cnt; reg [3:0] led1;

qq_39633876的博客 1481

Node.js的Socket编程 ——Socket.io

HTTP 协议是一种无状态的、无连接的、单向的应用层协议。它采用了请求/响应模型。通信请求只能由客户端发起,服务端对请求做出应答处理,HTTP 协议无法实现服务器主动向客户端发起消息。这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。大多数 Web 应用程序将通过频繁的异步JavaScript 和 XML(AJAX)请求实现长轮询。轮询的效率低,非常浪费资源。Websocket应运而生,WebSocket 连接允许客户端和服务器之间进行全双工通信。.........

niuroufen5的博客 6978

Allegro网表导入报错VOIDs not allowed in parent SHAPE的解决方案

在PCB设计流程中,网表导入是确保电气连接正确传递的关键步骤。其原理是将原理图的逻辑连接关系映射到物理版图的图形数据库中。这一过程的技术价值在于保证设计数据的一致性,避免后续生产中出现电气错误。然而,在Cadence Allegro等EDA工具的实际应用中,数据库内部状态的不一致可能引发操作失败,例如常见的“VOIDs are not allowed in the parent SHAPE”报错。这类问题通常源于多人协作、跨版本操作或频繁编辑后积累的数据结构冗余。针对此场景,核心的解决方法是执行Databa

weixin_30954817的博客 322

27、自闭症儿童治疗与玩具设计研究

本研究探讨了自闭症儿童的治疗方法与玩具设计之间的关联,分析了游戏疗法、音乐疗法和职业疗法等在治疗中的应用,并介绍了多种针对自闭症儿童的治疗玩具案例。通过用户研究和多学科合作,提出了以Pro-Ability为核心的设计理念,开发了结合音乐疗法和精细运动训练的智能玩具套件。研究总结了当前成果与局限性,并展望了未来发展方向,旨在为自闭症儿童提供更有效的康复支持。

keras9composer的博客 211

【课程笔记】Node.js:Socket通信

有关Node.js中的Socket通信的学习

qq_48968230的博客 2714

云端全自动AI漫剧生成工作流:从模型选型到完整实现

本文提出了一套云端全自动AI漫剧生成工作流解决方案,旨在解决传统漫剧制作效率低下的问题。该系统采用"编排引擎+模型矩阵"架构,通过集成大语言模型、图像生成、视频合成等技术,实现从剧本输入到成片输出的全流程自动化。 核心内容包括: 模型选型方案:剧本解析采用DeepSeek-V3/GPT-4o,图像生成使用DALL-E 3,视频合成选用Stable Video Diffusion,语音合成采用MiniMax TTS 系统架构设计:基于Celery分布式任务队列的编排层,分解任务至各功能模块

huanghm88的专栏 643

使用node+socket搭建一个星铁聊天室

使用node+socket搭建一个星铁聊天室👻👻 要实现一个基于Node.js和Socket.IO的网页聊天室 创建一个Node.js项目。 安装必要的依赖库。 设置服务器端Socket.IO。 创建客户端HTML和JavaScript代码。 实现聊天功能,支持三个角色:阿晴、瓦尔特、三月七。 1. 创建Node.js项目 首先,初始化一个新的Node.js项目: mkdir cha

个人博客地址为http://elikhb.top/ 1296

通过电源模块降低电源噪声的3种方法

电源噪声是一种常见且不受欢迎的电气现象。如果不降低噪声,其会对敏感的医疗、测试测量、航空航天和国防系统的应用性能产生不利影响。当今的高精度模拟信号链系统需要直流/直流开关稳压器产生稳压电源轨,为低噪声应用中的模数转换器(ADC)、数模转换器(DAC)、现场可编程门阵列(FPGA)及其子系统供电。尽管直流/直流开关稳压器具有高工作效率,它们的开关操作会导致较大的不连续电流,从而产生较高的输入和输出电压纹波、频率尖峰和宽带噪声。

qq_43416206的博客 1425

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

node socket搭建简单聊天室

html Socket.IO 聊天室 *{padding: 0;margin: 0;} h1{ font-family: Arail,Helvetica; font-weight: bold; font-size: 14pt; color: #006bb5; background: #f0f0f0; border-radius:

magicfly9527的专栏 579

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

node.js+express+socket.io+jquery+ajax+bootstrap搭建一个聊天室

node.js+express+socket.io+jquery+ajax搭建一个聊天室

冷月心的博客 917

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Node.js+Socket.IO搭建聊天室

                             Node.js+Socket.IO搭建聊天室   Web领域的实时推送技术,也被称作Realtime技术。这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新。它有着广泛的应用场景,比如在线聊天室、在线客服系统、评论系统、WebIM等。 WebSocket简介 谈到Web实时推送,就不得不说WebSocket。在Web...

Iam8600的博客 834

Node.js+Express+Socket.IO搭建在线聊天室

1.聊天问题图解: 首先:用户聊天是通过Socket.IO完成的,和Express框架没有多大关系。最多就是同时监听同一个端口。 2.既然是通过Socket.IO进行聊天,那么就必须有服务器端和客户端。如图: 其他服务器端和客户端都是一个普通的js文件而已。(这里我就以 : chat.js为客户端 。  talk.js为服务器端) 其实服务器端和客户端的函数大致都是一一

-_-独行侠>_> 1253

使用node、Socket.io 搭建简易聊天室

Socket.io是一个WebSocket库,会自动根据浏览器从WebSocket、AJAX长轮询、Iframe流等等各种方式中选择最佳的方式来实现网络实时应用,而且支持的浏览器最低达IE5.5。 Socket.io 服务器 和 Socket.io 客户端之间`全双工通信信道` **尽可能**使用WebSocket 连接建立(”尽可能“就说明要求客户端和服务端都必须使用http://socket.io的解决方案),并将使用` HTTP 长轮询`作为后备。

编码世界 1614

socket.io & Node.js搭建多聊天室

socket.io & Node.js搭建多聊天室

唐大帅的编程之路 1447

基于node.js的简单在线聊天室

1.服务端 提供web服务 接收客服端所发送的消息 主动向客服端发送消息 2.客户端 接收服务端所发送的消息 连接到聊天服务器 发送消息到服务端 客户端与服务端的关系图 一般的请求协议都是HTTP或HTTPS请求协议,HTTP协议是一种无状态协议,由于HTTP协议是基于请求/响应范式的(相当于客户机/服务器 ),只能通过客服端请求服务端才会响应,不会主动发送信息给客服端,所以不能适用于聊...

lyar1225的博客 1623

Node.js下基于Express + Socket.io 搭建一个基本的在线聊天室

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34266504的博客 109

Socket.IO实战:5分钟搭建Node.js实时聊天室(附完整代码)

本文详细介绍了如何使用Socket.IO和Node.js快速搭建实时聊天室,包含完整代码示例和实战技巧。通过Socket.IO这一强大的实时通信库,开发者可以轻松实现低延迟的消息传递,适用于在线客服、协作工具等场景。文章还提供了生产环境优化建议,帮助提升系统稳定性和扩展性。

weixin_30352645的博客 498
上一篇: node.js应用场景分析
下一篇: 用node.js实现require.js
景洪在编程
博客等级 码龄9年 13粉丝 63原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值