《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
相关文章
|
3天前
|
人工智能 NoSQL atlas
使用MongoDB 构建AI:轻松应对从预测式AI到生成式AI
无论企业目前处于AI发展的哪个阶段,MongoDB均可提供支持
1618 2
|
3天前
|
人工智能 NoSQL atlas
4大企业实例解析:为何MongoDB Atlas成为AI服务构建的首选
本文所提及的仅是MongoDB Atlas在AI领域可实现功能的冰山一角
1580 1
|
3天前
|
NoSQL atlas MongoDB
MongoDB白皮书推荐:零售企业构建员工赋能应用程序的痛点与解决方案
良好的数据基础是打造企业机构所需的最佳员工赋能产品的前提,而 MongoDB Realm 所具备功能性和灵活性足以全面提升员工效率,避免增加基础设施的负担
1625 3
|
3天前
|
JavaScript 前端开发 持续交付
【专栏】Vue.js和Node.js如何结合构建现代Web应用
【4月更文挑战第27天】本文探讨了Vue.js和Node.js如何结合构建现代Web应用。Vue.js作为轻量级前端框架,以其简洁易懂、组件化开发、双向数据绑定和虚拟DOM等特点受到青睐;而Node.js是高性能后端平台,具备事件驱动、非阻塞I/O、丰富生态系统和跨平台优势。两者结合实现前后端分离,高效通信,并支持热更新、持续集成、跨平台和多端适配,为开发高性能、易维护的Web应用提供强有力的支持。
|
3天前
|
Web App开发 JavaScript NoSQL
深入浅出:构建基于Node.js的RESTful API
在当今快速发展的互联网时代,RESTful API已成为前后端分离架构中不可或缺的一部分。本文旨在为初学者和中级开发人员提供一个清晰、简洁的指南,详细介绍如何使用Node.js构建一个高效、可维护的RESTful API。通过结合实际案例,本文将从API设计理念出发,深入讲解如何利用Express框架及MongoDB数据库实现API的增删改查功能,同时探讨如何通过JWT进行安全认证,确保数据传输的安全性。此外,文章还将简要介绍如何使用Swagger生成API文档,使得API的测试和维护更加便捷。无论你是希望提升现有项目的API设计,还是想从零开始构建一个新项目,本文都将为你提供一条清晰的道路
|
3天前
|
存储 监控 JavaScript
使用Node.js构建实时聊天应用的技术指南
【5月更文挑战第12天】本文指导使用Node.js、Express.js和Socket.IO构建实时聊天应用。技术栈包括Node.js作为服务器环境、WebSocket协议、Express.js作为Web框架和Socket.IO处理实时通信。步骤包括项目初始化、安装依赖、搭建服务器、实现实时聊天功能、运行应用以及后续的完善和部署建议。通过这个指南,读者可以学习到创建简单实时聊天应用的基本流程。
|
3天前
|
缓存 监控 JavaScript
Node.js中构建RESTful API的最佳实践
【4月更文挑战第30天】本文介绍了在Node.js中构建RESTful API的最佳实践:选择合适的框架(如Express、Koa)、设计清晰的API接口(遵循HTTP动词和资源路径)、实现认证授权(JWT、OAuth 2.0)、错误处理、限流缓存、编写文档和测试,以及监控性能优化。这些实践有助于创建健壮、可维护和易用的API。
|
3天前
|
消息中间件 监控 JavaScript
Node.js中的微服务架构:构建与实践
【4月更文挑战第30天】本文探讨了在Node.js中构建微服务的实践,包括定义服务边界、选择框架(如Express、Koa或NestJS)、设计RESTful API、实现服务间通信(HTTP、gRPC、消息队列)、错误处理、服务发现与负载均衡,以及监控和日志记录。微服务架构能提升应用的可伸缩性、灵活性和可维护性。
|
3天前
|
人工智能 NoSQL atlas
如何用MongoDB Atlas和大语言模型,高效构建企业级AI应用?
利用生成式 AI 强化应用程序为客户打造令人叹服、真正差异化的体验意味着将人工智能建立在事实的基础之上
1634 0
|
3天前
|
Web App开发 JavaScript 前端开发
使用Node.js和Express构建RESTful API
使用Node.js和Express构建RESTful API
27 0