【发布时间】:2015-01-17 06:27:06
【问题描述】:
我是第一次使用 Socket.io,我尝试制作一个简单的游戏。这一次,我有一个这样结构的 mongo 数据库:
| Sessions | | Users | | Games |
|-----------| |------------| |-----------|
| * _id | | * _id | | * _id |
| * user_id | | * game_id | | * ... |
| * .... | | * ... | | |
我已经在套接字连接之前使用.set() 函数在套接字连接上检索到用户session_id:
var io = require('socket.io').listen(server);
io.set('authorization', function(handshakeData, accept) {
// Retrieve client session here and put data on handshakeData
});
// IO.Socket connection
io.sockets.on('connection', function(socket) {
// session_id are accessible on socket here
});
但是现在问题: 每次我通过套接字收到客户端的请求(针对特定游戏的操作)时,我都必须:
- 从套接字中获取 session_id
- 向 mongo 询问关联会议
- 再次向 mongo 询问与会话关联的用户,以验证客户端是否在此游戏中
- 最后是游戏数据
这里有 3 个请求,仅用于检索每个套接字连接的信息。我每秒可以有很多套接字请求。
我很害怕 mongodb 会如何被套接字请求重载,我不知道最好的解决方案。
- 我可以将所有会话、用户和游戏对象保存在套接字上以直接访问吗?没有 mongo 请求
- 如果我这样做了,我该如何处理游戏更新? (如果其他玩家移动等)
谢谢大家的帮助,我很抱歉我的英语不好:/
【问题讨论】:
标签: javascript node.js mongodb sockets