Node.js从一个客户端获取数据并将其发送到另一客户端

时间:2018-09-07 12:50:52

标签: node.js

我刚刚用画布和JS创建了一个单人Atari游戏,并面临将其变成多人游戏的挑战。

所以现在我基本上是在尝试从一个客户端获取数据,并使用Node.js将其发送到另一个客户端。

我只想举一个简单的示例,因为我只能在互联网上找到复杂的示例,而我对Node.js的经验几乎为零。

您可能会猜到,我想在两个客户端之间交换元素坐标。

1 个答案:

答案 0 :(得分:0)

例如,您可以使用数据库在一个服务器上存储数据(坐标),然后任何/允许的用户都可以使用/从数据库中获取坐标。


通过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)

            }
        })

    }
})

})


发给用户2 从服务器中的数据库获取坐标

 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毫秒左右。哪一个   好的。如果有误,请发表评论。

enter image description here