《Node应用程序构建——使用MongoDB和Backbone》一2.4 Socket.io

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介:

本节书摘来自异步社区《Node应用程序构建——使用MongoDB和Backbone》一书中的第2章,第2.4节,作者【美】Mike Wilson,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.4 Socket.io

Node应用程序构建——使用MongoDB和Backbone
Socket.io是你的朋友。它将消除制作实时网络应用程序时的乏味工作,处理所有跨浏览器兼容的问题,在你的后端Node服务器和前端JavaScript客户端之间,留出干净、简单的JavaScript接口。这是一个令人激动的库,因为作为一个程序员,它让你专注于单一脚本语言的程序代码,消除数据和最终用户之间的网络障碍。

要安装Socket.id,就用npm。


3c67e2ea3432c41e5d08f3aa55e524383f4e7425

例2-7为网站添加了实时聊天功能,它创建了一个Socket.io对象,并将其附加到http.Server上,在Express之前。在接到浏览器的socket连接时,Socket.io触发应用内的一个回调函数,向连接用户发出任意的一段欢迎消息。sendChat函数是为了方便而创建的;给定标题和内容,它使用Socket.io的emit命令发送一段JSON数据给连接的socket。因为它在回调函数之内,所以对所有socket级别的事件是可见的,但对应用的其他部分是不可见的。

例2-7 为Express服务器添加实时聊天功能


16248b2801d8380b5df1569ab2dd082bef23e3cb

socket.on('chat'…)这行代码创建了一个事件回调,每当连接的用户往socket发送消息时,就会执行。这里没有太多功能,服务器只是将用户发来的消息直接显示给他们。

为了给这个例子增加点活力,我已经将一个JavaScript的setInterval函数与其回调函数包含了进来,每隔5秒钟,它会向连接的客户端随机发送3个配角的一句口头禅。

在例2-7中,Express服务器的实例化和之前的例子不同。它不是让Express对象直接监听传入的连接,而是先通过http.createServer(app)函数附加在http.Server中,得到的服务器对象再监听进入的连接。在幕后,Express的listen命令做同样的事而不暴露http.Server。采用这种方式,你要暴露http.Server,以便让Socket.io连接到它。

例2-8的聊天布局在block scripts中加入了内容,在浏览器中渲染时,它在HTML内容中加上了Socket.io的功能。Socket.io使某些文件可供下载,这就是为什么你可以包含对/socket.io/socket.io.js的脚本引用。JavaScript文件socket.io.js包含了浏览器连接到socket服务器所需的全部功能,它还包含回退机制,为过时的、不支持Web socket的浏览器提供类似socket的功能。

例2-8 聊天页面的Jade模板(chat.jade)


4004c328693200641f761ac0c2dc435260da9b32

一旦提交按钮被激活,Socket.io会发出聊天框的内容。在从网络服务器接收聊天事件后,Socket.io会把传入的消息内容替换到聊天显示窗口(div#chat)。重要的是,要注意到socket事件和函数不论用在客户端上还是网络服务器上都是完全相同的。这让你为整个应用程序提供了一个干净的通信联系,无需担心传输或接收的数据需要转换。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
4月前
|
NoSQL JavaScript 前端开发
如何使用 Node.js 连接和操作 MongoDB 数据库?
如何使用 Node.js 连接和操作 MongoDB 数据库?
233 2
|
2月前
|
Web App开发 JavaScript NoSQL
深入浅出:构建基于Node.js的RESTful API
在当今快速发展的互联网时代,RESTful API已成为前后端分离架构中不可或缺的一部分。本文旨在为初学者和中级开发人员提供一个清晰、简洁的指南,详细介绍如何使用Node.js构建一个高效、可维护的RESTful API。通过结合实际案例,本文将从API设计理念出发,深入讲解如何利用Express框架及MongoDB数据库实现API的增删改查功能,同时探讨如何通过JWT进行安全认证,确保数据传输的安全性。此外,文章还将简要介绍如何使用Swagger生成API文档,使得API的测试和维护更加便捷。无论你是希望提升现有项目的API设计,还是想从零开始构建一个新项目,本文都将为你提供一条清晰的道路
|
4月前
|
存储 设计模式 监控
如何构建自定义 Node.js 事件发射器
如何构建自定义 Node.js 事件发射器
492 2
|
15天前
|
人工智能 NoSQL atlas
如何用MongoDB Atlas和大语言模型,高效构建企业级AI应用?
利用生成式 AI 强化应用程序为客户打造令人叹服、真正差异化的体验意味着将人工智能建立在事实的基础之上
1582 0
|
1月前
|
Web App开发 JavaScript 前端开发
使用Node.js和Express构建RESTful API
使用Node.js和Express构建RESTful API
19 0
|
2月前
|
Web App开发 JavaScript 前端开发
构建现代Web应用:Vue.js与Node.js的完美结合
在当今快速发展的Web技术领域,选择合适的技术栈对于开发高效、响应迅速的现代Web应用至关重要。本文深入探讨了Vue.js和Node.js结合使用的优势,以及如何利用这两种技术构建一个完整的前后端分离的Web应用。不同于传统的摘要,我们将通过一个实际的项目示例,展示从搭建项目架构到实现具体功能的整个过程,着重介绍了Vue.js在构建用户友好的界面方面的能力,以及Node.js在处理服务器端逻辑和数据库交互中的高效性。通过本文,读者不仅能够理解Vue.js与Node.js各自的特点,还能学习到如何将这两种技术融合应用,以提升Web应用的开发效率和用户体验。
|
2月前
|
NoSQL JavaScript 前端开发
深入浅出:使用Node.js和MongoDB构建RESTful API
在当今的软件开发领域,构建高效、可扩展的Web服务已成为开发者的重要任务之一。本文将引导读者通过现代JavaScript环境——Node.js,搭配流行的NoSQL数据库MongoDB,一步步构建一个RESTful API。不同于常规的摘要,我们将采用故事化的方式,通过一个虚构的应用“BookFinder”的开发旅程,带领读者理解API设计、数据库交互及安全性考量等关键知识点。无论你是前端工程师希望深化后端知识,还是后端新手寻求实践机会,本文都将提供你所需的指南和启示。
|
3月前
|
JavaScript 前端开发 数据安全/隐私保护
NodeJS 下构建 命令行工具(CLI) 与 交互式命令界面 的实践
NodeJS 下构建 命令行工具(CLI) 与 交互式命令界面 的实践
221 1
|
3月前
|
JavaScript 前端开发 数据安全/隐私保护
深入探讨Node.js:构建高性能服务器端应用
深入探讨Node.js:构建高性能服务器端应用
173 1