javascript - 如何用nodejs接收GPS发送的数据,并实时返回前台页面
怪我咯
怪我咯 2017-04-10 17:42:01
[JavaScript讨论组]

我的需求是这样的:
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('<h1>Welcome Realtime Server</h1>');
});

//在线用户
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);
});
怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(1)
怪我咯

你把你接受到的东西,替换成一个常量,看看输入过去有值吗?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号