拥有“记住我”功能是非常有用的功能,并且使用React和Express实施相对容易。 从建立WebRTC聊天应用程序的最后一部分继续,现在我们将添加Mongo支持的持久会话和数据库支持的在线用户列表,以达到良好的效果。
会议?
如果您以前从未使用过会话,那么简而言之,它们与cookie十分相似,因为这些会话使您可以实时跟踪应用程序的活动用户。 会话实际上是通过session cookie
工作的,该session cookie
从您的应用程序的请求/响应标头中发送。
因此,cookie和会话本质上是交织在一起的。 那么,如果我们已经有Cookie,为什么我们需要会话? 会话还为您提供了定义应用程序服务器部分使用的后端存储的功能。 这意味着只要您的应用需要信息,就可以从数据库中检索信息。
因此,在一个用于聊天应用程序的真实示例中,我们现在可以存储用户的用户名,并且如果我们对应用程序进行了一些重新配置,还可以将整个聊天记录插入数据库中以进行日志记录。
在下一个示例中,我们将使用Mongo数据库进行持久性后端存储。 这是可用于会话存储的几个选项之一,对于具有多个Web服务器的大规模生产设置,我强烈建议另一个选择是memcache 。
文件储存
Mongo是NoSQL文档存储引擎,而不是诸如流行的MySQL之类的关系数据存储。 如果您来自MySQL或类似的数据库并且需要与Mongo保持联系,NoSQL真的很容易使您动手,这不会花很长时间。 您应该知道的最大区别如下:
- 顾名思义,NoSQL不使用SQL来执行查询。 而是使用方法调用来抽象数据; 例如
db.collectionName.find()
将是SELECT * FROM table
。 - 术语有所不同:在MySQL中,我们具有表,行和列,在Mongo中,它具有集合,文档和键。
- 数据是结构化的,与JSON对象相同。
如果您还没有Mongo,请通过软件包管理器进行安装。 例如,在基于Linux的发行版中:
$ sudo apt-get install mongodb
一旦我们安装了蒙戈,我们可以轻松地添加蒙戈支持我们的聊天应用程序mongoose
从NPM模块。 使用以下命令安装mongoose
:
$ npm install mongoose --save
现在,将一些Mongo添加到我们的应用程序中。 启动代码编辑器,然后打开app.js
并将脚本顶部设置如下。
//Configure our Services
var PeerServer = require('peer').PeerServer,
express = require('express'),
mongoose = require('mongoose'),
assert = require('assert'),
events = require('./src/events.js'),
app = express(),
port = process.env.PORT || 3001;
//Connect to the database
mongoose.connect('mongodb://localhost:27017/chat