`
hongtoushizi
  • 浏览: 378889 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

NodeJS 多进程运行后,socket.io 应该如何使用?与 Node 单进程时一样吗?

阅读更多

多进程运行 node 时,进程间变量不共享,用户请求一个路由后,会由随机的进程来处理。

socket.io 默认使用的内存存储,我们所定义的 socket.io 事件会限制在当前进程。

为了实现多进程 socket.io 的正常使用,就需要一种持久性的存储,socket.io 支持 RedisStore 存储,或者研究下它的接口实现文件存储或者 mongodb 存储之类的。

 

io.set('store', redisStore);

假如我们使用 RedisStore 存储,当客户端连接后,使用 join 命令把当前连接请进其 username 的房间,这样可以实现即使用户同时打开了 N 个浏览器窗口,都能实时获得通知状态以及实时改变状态。

 

 

io.sockets.on('connection',function(socket){// 根据认证握手后的数据,取得用户唯一标识
    socket.join(username);});

向客户端发送数据

 

 

io.sockets.in(username).emit('notify num', count);
io.sockets.emit('online', username);

后者向所有连接的客户端发送数据,前者只向 username 房间的连接发送数据(包括自己)。

 

还有一种发送数据的方式是广播(broadcast),给房间内除了自己外的所有连接发送数据。

 

socket.broadcast.emit("data ....");

不论服务端单进程还是多进程,客户端的代码书写方式都是一样的,这对客户端来说是透明的。

分享到:
评论

相关推荐

    实现nodejs与java的socket相互通信

    本示例聚焦于Node.js与Java之间的Socket通信,这是一个非常实用的技术,因为这两种技术在Web开发和后端服务中都占据着重要的地位。让我们详细探讨一下如何实现Node.js与Java的Socket通信。 首先,Socket是一种基于...

    nodejs结合socket.io实现websocket通信功能的方法

    本文实例讲述了nodejs结合socket.io实现websocket通信功能的方法。分享给大家供大家参考,具体如下: 因为项目中有需要实时获取后台数据的场景,之前一直是使用http心跳请求的方法。因为websocket与此模式相比有很大...

    nodejs-chat:使用nodejs,socket.io和mongodb的聊天系统

    - **后端**:Node.js服务器处理前端请求,使用Express框架创建API,通过Socket.IO监听和广播消息,同时与MongoDB交互,保存和检索聊天记录。 - **数据库设计**:可能包含用户信息集合和聊天记录集合,聊天记录包含...

    real-chat-nodejs:与用户和房间的实时聊天-Socket.io,Node和Express

    在本文中,我们将深入探讨如何使用Node.js、Express和Socket.io构建一个实时聊天应用程序,正如标题"real-chat-nodejs:与用户和房间的实时聊天-Socket.io,Node和Express"所示。这个项目的核心技术栈是JavaScript,...

    nodejs入门详解(多篇文章结合).docx

    4. **进程与线程**:Node.js 默认单进程运行,但可通过子进程模块(child_process)创建子进程,实现多进程通信。另外,Node.js 不支持多线程,但可以使用 worker_threads 模块实现多线程。 5. **定时器**:`...

    nodejs实现远程监测系统,node性能监控,Node.js源码.zip

    在Node.js中,可以使用各种库(如Socket.IO)来实现实时通信,从而获取和发送遥测数据。这些数据可能包括硬件状态、应用程序性能指标等。 3. **性能监控组件**: 在Node.js中,有多个库可以帮助我们监控性能,例如...

    Angular2-NodeJs:Angular2-Node.Js

    【Angular2-NodeJs: Angular2与Node.js的结合应用】 Angular2,是Google推出的下一代前端框架,它在AngularJS的基础上进行了全面的升级和优化,提供了更好的性能、更清晰的结构以及更强大的功能。而Node.js则是一个...

    Nodejs作为游戏后端开发中级教程.rar

    7. **性能优化**:Node.js 提供了各种工具和技术来优化性能,如使用 cluster 模块实现多进程,提升 CPU 密集型任务的处理能力;使用 performance API 监测性能瓶颈;通过缓存策略减少不必要的计算。 8. **错误处理*...

    video-chat-app-gus:使用NodeJS和Socket IO进行简单的视频聊天

    在本项目"video-chat-app-gus"中,我们将探讨如何使用Node.js和Socket.IO构建一个基本的视频聊天应用。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许我们在服务器端执行JavaScript代码,而Socket.IO...

    nodejs 基础教程.zip

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让开发者能够使用 JavaScript 来编写服务器端程序,极大地扩展了 JavaScript 的应用范围。Node.js 使用了一个事件驱动、非阻塞 I/O 模型,使其轻量又...

    nodejs 64位安装文件 - Mac操作系统

    4. **单一线程**:Node.js 默认使用一个单线程模型处理所有请求,但可以通过工作进程(worker process)实现多线程。 对于Mac用户来说,安装这个64位的Node.js绿色解压缩版本,可以避免复杂繁琐的编译过程,直接...

    Node.js 资源汇总

    - **实时通信**:WebSocket、Socket.IO 等库使得 Node.js 在实时通信应用中表现出色,如在线聊天、实时协作工具。 - **命令行工具**:Node.js 也可以创建 CLI(命令行界面)工具,例如 Gulp、Webpack 等构建工具。 -...

    realnode.io:Node.js包装器可实时访问您的传统MySql数据库,实时在多个用户之间同步数据,无需刷新,无需AJAX。(适用于基于Web的实时项目)

    使用realnode.io一个Node.js包装器实时访问您的传统MySql数据库,在多个用户之间实时同步数据,无需刷新,无需AJAX。(适用于基于Web的实时项目)。 示例项目 正在安装 使用realnode.io的逐步指南>>> 步骤1:首先,...

    nodejs处理tcp连接的核心流程.docx

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它允许开发者使用 JavaScript 编写服务器端应用程序。Node.js 的核心特性之一是其非阻塞 I/O 模型,这使得 Node.js 在处理大量并发连接时表现出色。本篇...

    WNodeJS:NodeJS 的 MVC 框架

    它支持: 创建多应用管理器和渲染视图管理器和配置模型在控制器内创建控制器和动作管理器和进程参数,来自 url 的参数打开socket.io 控制器渲染视图的支持接口。 支持者需要更多对象才能使用支持者为类扩展、实现、...

    一起学 Nodejs

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让开发者能够使用 JavaScript 编写服务器端程序,打破了 JavaScript 仅限于浏览器的局限。Node.js 使用了一个事件驱动、非阻塞 I/O 模型,使其轻量又...

    awesome-nodejs:令人愉快的Node.js软件包和资源

    《令人愉快的Node.js软件包和资源:awesome-nodejs全解析》 在现代Web开发领域,Node.js以其异步非阻塞I/O模型和高效的性能,成为构建高性能服务器端应用的首选工具。"awesome-nodejs"项目正是这样一个宝藏库,它...

    nodejs相关

    8. **进程与线程**:Node.js 通过 `child_process` 模块可以创建子进程,实现多进程编程。虽然 Node.js 默认单线程,但可以通过 `cluster` 模块利用多核 CPU,创建工作进程。 9. **TCP 和 UDP**:Node.js 提供了对...

Global site tag (gtag.js) - Google Analytics