Javascript 在socket.io中向特定用户发送警报后,如何读取服务器中的响应?
我是Socket.io的新手。这是我的问题。 我想获得Android设备的实时位置。所以我创建了一个简单的应用程序来获取当前的GPS位置。和Node.js服务器以及Angular管理面板 这是我的Node.js服务器代码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
//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
})
});