初学Nodejs,期间遇到各种困难,session共享让我有点很郁闷。
只想吐槽一下nodejs中间件的版本更新,改动很大,网上看的教程都是旧的,代码是完全跑不通。
关于session的共享,折腾了半天,大部分从老外的博客中拼凑起来的。
中间件版本:
express@4.10.1
cookie@0.1.2
cookie-parser@1.3.3
express-session@1.9.1
socket.io@1.2.0
核心代码:
io.use(function(socket, next) { var data = socket.handshake || socket.request; if (data.headers.cookie) { data.cookie = cookie.parse(data.headers.cookie); data.sessionID = cookieParser.signedCookie(data.cookie[COOKIE_KEY], COOKIE_SECRET); data.sessionStore = sessionStore; sessionStore.get(data.sessionID, function (err, session) { if (err || !session) { return next(new Error('session not found')) } else { data.session = session; data.session.id = data.sessionID; next(); } }); } else { return next(new Error('Missing cookie headers')); } });
附件中下载源码。 多使用console.log() 慢慢研究。
相关推荐
《你画我猜游戏开发:基于NodeJS的Express与Socket.IO实践详解》 在Web开发领域,Node.js以其异步非阻塞I/O和高性能的特点,成为构建实时交互应用的热门选择。本篇文章将深入探讨如何利用Node.js的Express框架和...
你需要安装必要的Node.js包,如`express`(用于创建Web服务器)和`socket.io`(WebSocket.IO的Node.js版本)。 1. **设置Express服务器**:首先,使用Express创建一个基本的HTTP服务器,这是WebSocket.IO的基础。...
Web应用中,WebSocket和socket.io可以用于实现长连接,以支持服务器与客户端之间的实时通信。身份验证机制也是Web应用中非常重要的部分,可以采用Cookie配合Session或JWT(JSON Web Tokens)来实现用户身份验证和...
4. **Socket.IO**:在聊天室中,Socket.IO负责建立WebSocket连接,处理客户端和服务器之间的消息传递。它可以监听事件(如用户加入房间、发送消息等),并在必要时广播这些事件给所有连接的客户端。 5. **认证与...
在这个项目中,“webrtc-simple-server”是一个基于Node.js的轻量级服务器,它利用了Express框架和Socket.IO库来处理WebRTC的相关信令过程,以实现1对1的视频通话。 Express是Node.js中最流行的web应用框架,它提供...
4. **Socket.IO**:在Node.js环境下,常常使用Socket.IO库来简化WebSocket的使用,因为它提供了更高级别的抽象,处理了WebSocket的一些兼容性和连接问题。Socket.IO能自动降级到其他传输方式(如polling),确保在...
通过本项目的构建过程,开发者不仅能掌握如何使用Node.js和WebSocket来创建实时通讯服务,还将学会利用express和socket.io等热门框架来快速搭建Web应用。项目完成后,用户将能够在浏览器中打开一个网页,与其他用户...
Sails的核心特性包括对Express和Socket.io的集成、使用Waterline ORM进行数据库交互、内置的Blueprint API以及支持Policies中间件。 1. **Sails与Express和Socket.io** Sails框架构建于Express之上,利用其强大的...
- **npm**:Node.js的包管理器,允许开发者共享和安装第三方模块,如Express框架、Socket.IO等。 2. **Express框架** - **快速搭建Web服务器**:Express是基于Node.js的Web应用框架,简化了HTTP服务器的创建,...
6. **套接字通信 (socket.io)**:实现实时双向通信,可用于聊天功能或推送通知。 **MongoDB 知识点:** 1. **文档型数据库**:MongoDB 存储数据的形式是 JSON 格式的文档,易于理解和操作。 2. **集合与数据库**:...
6. **Chat应用与Socket.IO**:Socket.IO是针对实时应用的库,它在WebSocket基础上提供了一层抽象,解决了WebSocket的一些兼容性和可靠性问题。通过Socket.IO,我们可以轻松实现聊天室和DJ功能,通过`socket.emit`...
- **socket.io**:简化 WebSocket 使用,提供跨域和降级支持。 15. **测试工具**(如 Mocha 和 Chai) - **Mocha**:流行的 JavaScript 测试框架。 - **Chai**:断言库,配合 Mocha 进行单元测试和集成测试。 ...
4. **NodeJS**:NodeJS作为后端运行环境,可以处理服务器逻辑,如用户认证、匹配算法、实时通信等。通过WebSocket或Socket.IO实现即时通讯功能。 5. **Real-time Communication**:为了实现聊天轮盘的实时性,项目...
3. **Socket.IO**:在Node.js环境中,Socket.IO是一个流行的库,用于实现实时、低延迟的双向通信。它兼容多种浏览器和技术栈,并且在WebSocket不支持的情况下,可以自动降级到其他通信方式(如Ajax长轮询)。 4. **...
在实际项目中,你可以进一步探索Express.js的高级特性,如Socket.IO集成、WebSocket支持、自定义错误类型等,以提升应用的性能和用户体验。随着Node.js和Express.js技术的不断演进,保持学习和更新知识至关重要,...
项目可能会使用如body-parser(解析请求体)、express-session(管理会话)、socket.io(WebSocket库)等模块。 6. **文件结构**:从文件名称列表`node_chat-master`我们可以推测,这是一个包含源代码和资源的项目...
这需要对WebSocket协议和Node.js中的相关库(如socket.io)有一定理解。 总的来说,“microblog-master-nodeJS”项目涵盖了Node.js开发中的诸多重要知识点,包括但不限于Node.js基础、Express框架的应用、数据库...
7. **Node.js模块**:项目可能使用了如`express`(Web应用框架)、`socket.io`(WebSocket库)和`redis`(Redis客户端库)等Node.js模块来简化开发。 8. **部署与运行**:项目可能通过npm(Node.js包管理器)进行...
2. **Socket.IO**:这是一个强大的库,支持实时、双向通信,是构建实时应用如在线游戏的理想选择。它能在WebSocket不被浏览器支持的情况下提供回退机制,确保在各种环境下都能实现可靠的实时通信。 3. **MongoDB**...