Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在socket.io中向特定用户发送警报后,如何读取服务器中的响应?_Javascript_Android_Node.js_Sockets_Socket.io - Fatal编程技术网

Javascript 在socket.io中向特定用户发送警报后,如何读取服务器中的响应?

Javascript 在socket.io中向特定用户发送警报后,如何读取服务器中的响应?,javascript,android,node.js,sockets,socket.io,Javascript,Android,Node.js,Sockets,Socket.io,我是Socket.io的新手。这是我的问题。 我想获得Android设备的实时位置。所以我创建了一个简单的应用程序来获取当前的GPS位置。和Node.js服务器以及Angular管理面板 这是我的Node.js服务器代码 //Some import statements are missing here. Not added. var app = require('express')(); var server = require('http').createServer(app); var i

我是Socket.io的新手。这是我的问题。 我想获得Android设备的实时位置。所以我创建了一个简单的应用程序来获取当前的GPS位置。和Node.js服务器以及Angular管理面板

这是我的Node.js服务器代码

//Some import statements are missing here. Not added.
var app = require('express')();
var server = require('http').createServer(app);
var io = require('socket.io')(server);

// Creating the socket connection.
io.sockets.on('connection', function (socket) {
    socket.on('join', function (data) {
        socket.join(data.id); 
    });
});

module.exports = function (app, express) {
    var api = express.Router();

    api.post('/device_location/:child_id', function (req, res) {
        var child_id = req.body.child_id;
        io.sockets.in(child_id).emit('new_msg', {msg: 'gps_data'}); //Sending request to registered android device.
        var gps_location = ""; //Here i want to take GPS data from android client.
        res.json({ type: "success", code: 200, data: gps_location }); //Then i can send the response to anyone who need that.
    });

    return api;
};
如果不清楚,请检查以下要点:

首先,我创建了套接字连接。然后Android客户端可以使用唯一的用户ID连接到它

然后,当管理员从管理按钮按下按钮时,我发送获取GPS数据的请求

in(child_id).emit('new_msg',{msg:'gps_data'})

这里,
child\u id
是android应用程序的id。 然后我想从Android应用程序获取响应,并在服务器中读取它。 读完后,我可以把它寄给任何要求它的人

res.json({type:“success”,代码:200,数据:gps\u location})

这是发送响应的正常Node.js方式

我们如何获得对该
var gps_location=“”的响应我们获取特定用户GPS值的变量


请帮我做这个。尝试了很多方法,但都不好。我只需要在服务器中读取Android客户端的响应并对其进行处理。

您需要使用以下方式将您的GPS位置从Android发送到服务器:

socket.emit("gpsdata", data)
然后使用
套接字在节点中接收它。on(“gpsdata”,doSomething)


伙计们,在投票否决之前,你能告诉我这有什么问题吗?这就是我现在面临的问题。所以这是我能表达这一点的最好方式。忽略那些反对票。你的问题看起来很好,而且StackOverflow充满了愚蠢的沉默的选民,他们不会有任何帮助。如果您希望您的服务器接收Android数据,那么您需要您的Android应用程序使用
socket.emit(“gpsdata”,data)
,将其发送到服务器,然后使用
socket.on(“gpsdata”,data=>{……})
@JeremyThille,谢谢。但是有数百名用户。所以我想根据userID读取它。就像我发送给特定用户一样,我可以读取特定用户的响应吗?如果两个Android用户同时发送GPS数据会怎么样?您也可以使用
child\u id=req.params.child\u id
获取child\u id,每个套接字对应一个用户。谢谢您的回答。但是当许多用户要这样做时,我们如何识别发送者呢?因为我们必须在地图上显示特定发件人的位置。请帮助我我喜欢这个解决方案:
socket
是一个对象;像JS中的每个对象一样,您可以扩展它,例如通过将用户数据附加到它:
socket.user={name:“John”,location:[1.234,5.678]}
。因此,每个套接字将始终承载其用户的信息。您可以通过执行
socket.user.location
来获取位置。
io.sockets.on('connection',  socket => {
    socket.on("gpsdata", data => { // Receive data from one socket
        io.sockets.emit('gps_location', { gps_location : data }) // Emit to everyone
    })
});