如何用nodejs接收GPS发送的数据,并实时返回前台页面
我的需求是这样的:
1、通过GPS向一个固定IP下的某一个端口发送实时坐标信息。
2、用nodejs写一个后台,获取GPS发送的坐标信息。
3、使用nodejs中的socket.io包结合html5的websocket把数据实时的返回到前台页面,然后再在前台页面展示GPS数据。
开发环境:
使用TCP/UDP Socket调试工具模拟GPS发送数据;
Visual Studio Code 开发;
目前我遇到的问题:
1、获取GPS数据后,使用socket.io把数据发送到前台后都是undefined。
2、我把接收数据和向前台发送数据写在一共页面中是否可以这样写?
3、我的代码逻辑有没有问题?
使用TCP/UDP Socket调试工具模拟GPS发送数据:
nodejs后台可以接受到发送的数据:
前台页面展示数据:
系统后台:
//接受gps发送的数据
var net = require('net');
var HOST = 'localhost';
var DataPORT = 1000;
var GPSData="";
var server = net.createServer(function (socket){
server.on('connection', function(sock) {
console.log('GPS接收端口已连接: ' + String(sock.remoteAddress) +':'+ String(sock.remotePort));
});
socket.on('data', function(data) {
var response = data.toString().trim();
console.log(String(response));
GPSData=String(response);
io.emit('message', String(response));
// if (/disconnect/.test(response)) {
// console.log("Client is diconnecting.");
// socket.end('Disconnecting you now.\r\n');
// }
});
socket.on('end', function() {
console.log('GPS接收端口已关闭!');
});
});
server.listen(DataPORT,function(){
console.log("服务器已启动数据接收端口,端口号为:" + DataPORT);
});
//向前端页面发送接收到的gps数据
var app = require('express')();
var http = require('http').Server(app);
var messagePort=3000;
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.send('
Welcome Realtime Server
');});
//在线用户
var onlineUsers = {};
//当前在线人数
var onlineCount = 0;
io.on('connection', function(socket){
console.log('a user connected');
//监听新用户加入
socket.on('login', function(obj){
//将新加入用户的唯一标识当作socket的名称,后面退出的时候会用到
socket.name = obj.userid;
//检查在线列表,如果不在里面就加入
if(!onlineUsers.hasOwnProperty(obj.userid)) {
onlineUsers[obj.userid] = obj.username;
//在线人数+1
onlineCount++;
}
//向所有客户端广播用户加入
io.emit('login', {onlineUsers:onlineUsers, onlineCount:onlineCount, user:obj});
console.log(obj.username+'加入了聊天室');
});
//监听用户退出
socket.on('disconnect', function(){
//将退出的用户从在线列表中删除
if(onlineUsers.hasOwnProperty(socket.name)) {
//退出用户的信息
var obj = {userid:socket.name, username:onlineUsers[socket.name]};
//删除
delete onlineUsers[socket.name];
//在线人数-1
onlineCount--;
//向所有客户端广播用户退出
io.emit('logout', {onlineUsers:onlineUsers, onlineCount:onlineCount, user:obj});
console.log(obj.username+'退出了聊天室');
}
});
//监听用户发布聊天内容
socket.on('message', function(obj){
//向所有客户端广播发布的消息
io.emit('message', GPSData);
console.log(obj.username+'说:'+obj.content);
});
});
http.listen(3000, function(){
console.log('服务器已启动websocket端口,端口号为:' + messagePort);
});
相关阅读:
用Jsoup解析html的时候,getElementsByTag获取不到Element
rc.local 自启动脚本的问题
关于2017年date对象的getyear()问题
应该以什么方式给别人发送在idea中创建的java-web项目?
为何没有权限
通过Javascript得到URL中的参数(query string)
用什么类 可以每隔一段时间执行一次代码 包括在后台
vue watch路由变化执行函数问题求助
'Population' has not been declared
Python的闭包, 有内存泄露的实例吗?
网站除联系方式外,其他内容被别人恶意实时同步
我该相信哪个?jsPerf or JSLitmus?
git 本地文件内容更改以后怎么同步到远程仓库
JS怎样找出字符串中的某些内容并加上标签?
mac用什么工具链接sqlserver
服务器如何通过app获取用户行为,一般以什么样方式保存
1-99正整数的正则
h5语义化是如何提高用户体验的,具体体现在哪些方面?
c++中关于boolalpha用法问题
mysql 用户的消息查询问题