node.js - Node.js 从一个客户端获取数据并将其发送到另一个客户端
问题描述
我刚刚用画布和 JS 创建了一个单人 Atari 游戏,并受到了将其变成多人游戏的挑战。
所以现在我基本上是在尝试从一个客户端获取数据并使用 Node.js 将其发送到另一个客户端。
我只想要一个简单的例子来说明它是如何工作的,因为我只能在互联网上找到复杂的例子,而且我对 Node.js 的经验几乎为零。
正如你可能猜到的,我想在两个客户端之间交换元素的坐标。
解决方案
您可以使用数据库将数据(坐标)存储在一台服务器上,然后任何/允许的用户都可以使用/从数据库中获取坐标。
通过 user1在服务器上保存坐标。
var express = require('express')
var MongoClient = require('mongodb').MongoClient
var router = express.Router()
var url = "mongodb://localhost:27017"
router.post('/setCordinates',function(reqs,resp){
MongoClient.connect(url,{ useNewUrlParser: true },function(err,database){
if(err){
console.log(err)
}else{
var dataBases = database.db("myApp")
// fetching user1 by some key **id** from data base
dataBases.collection('userCordinate').find({'id':reqs.body.id}).toArray(function(err,result){
if(err){
console.log(err)
}else if(result[0]){
// if user1 cordinates are on server then will update to new one
dataBases.collection('userCordinate').update({"id":reqs.body.id},{$set:{"cordinates":"X-Y"}})
}else{
dataBases.collection('userCordinates').insertOne(reqs.body)
}
})
}
})
})
到 user2从服务器获取数据库中的坐标
var express = require('express')
var MongoClient = require('mongodb').MongoClient
var router = express.Router()
var url = "mongodb://localhost:27017"
router.post('/getCordinates',function(reqs,resp){
MongoClient.connect(url,{ useNewUrlParser: true },function(err,database){
if(err){
console.log(err)
}else{
var dataBases = database.db("myApp")
// fetching user1 by some key **id** from data base to send it to user2
dataBases.collection('userCordinate').find({'id':reqs.body.id}).toArray(function(err,result){
if(err){
console.log(err)
}else if(result[0]){
// user2 can get cordinates from database
resp.send(result[0].cordinates)
}else{
resp.send({"No cordinates"})
}
})
}
})
})
可能是我错了,但查询时间 = 0 毫秒左右。没关系。如果有错请评论。
推荐阅读
- mysql - 如何在 MySQL 中将一行插入具有两个 FK 的表中?
- docker - 如何使用奇异性运行 docker 映像?
- vba - 试图打开特定记录的报告,但它一直显示所有记录 - 有点?
- python - 如何去除背景周围的白框?
- django - 如何将过滤器后端添加到基于功能的视图?
- angular - 带有输出兑现标志的 Angular 构建生成相同的哈希
- python - 用于计算两者之间差异的平方的 Python 代码
- eclipse - 当我从 Eclipse 运行我的 MonkeyC 程序时,为什么我的代码更改没有编译或显示?
- logging - 处理重写规则后的 Haproxy 记录最终路径
- c++ - Qt 如何枚举屏幕?