首页 > 解决方案 > Node.js 从一个客户端获取数据并将其发送到另一个客户端

问题描述

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

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

我只想要一个简单的例子来说明它是如何工作的,因为我只能在互联网上找到复杂的例子,而且我对 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 毫秒左右。没关系。如果有错请评论。

在此处输入图像描述


推荐阅读