服务器上运行mqttserver服务端

一、上传代码到服务器上

在这里插入图片描述

mqttserver.js代码

var mosca = require('mosca');
//构建自带服务器 
var MqttServer = new mosca.Server({ port: 12345 });
//对服务器端口进行配置, 在此端口进行监听 
MqttServer.on('clientConnected', function (client) {
    //监听连接 
    console.log('client connected', client.id);
}); 
/** * 监听MQTT主题消息 **/
MqttServer.on('published', function (packet, client) {
    //当客户端有连接发布主题消息 
    var topic = packet.topic; 
    console.log(packet);
    switch (topic) {
        case 'test': console.log('message-publish', packet.payload.toString());
            //MQTT转发主题消息 
            //
            MqttServer.publish({ topic: 'other', payload: 'sssss' });
            break;
        case 'other':
            console.log('message-123', packet.payload.toString());
            break;
    }
}); 
MqttServer.on('ready', function () {
//当服务开启时 
console.log('mqtt is running...');
});

二、先使用node xx.js启动,解决一下依赖问题

因为这个依赖mosca,所以得先弄一下依赖
进入到放文件的目录,使用普通方法启动

cd /www/server/mqtt/test/mqtt_test/
node mqttserver.js

然后报错

在这里插入图片描述

参考之前的文章,配置一下 点我直达

过程和Windows下的都一样,只不过这里使用Linux操作的

Tip:一定注意,改完那个配置文件保存后,不要着急着直接 node xx.js ,一定要先把目录切换回来,切换到mqttserver.js的目录下再执行命令。

运行成功:
在这里插入图片描述

三、然后使用pm2 start xx.js 启动

在这里插入图片描述

可以调试连接一下,现在就可以正常连接到mqtt服务端了。|ू・ω・` )

四、使用配置文件启动,后面方便更改配置

pm2 start app.json

apps是一个数组,数组中的每一个对象就对应一个pm2中运行的应用

{
  "apps": [
    {
      "name": "mqttserver", // 名称
      "script": "./mqttserver.js", // 入口文件
      "env": { // 环境
        "NODE_ENV": "development"
      },
      "env_production": {
        "NODE_ENV": "production"
      },
      //"watch": true,  //启用监控模式 当应用程序变动时,pm2会自动重载
      "instances": 5, // 启用多少个实例
      "exec_mode": "cluster", // 应用程序启动模式,这里设置的是cluster_mode(集群),默认是fork
      //"autorestart" : true, //应用程序崩溃或退出时自动重启
      "max_restarts" : 9, // 设置应用程序异常退出重启的次数,默认15次(从0开始计数)
      "restart_delay" : 5000, // 异常重启情况下,延时重启时间
      "log_date_format" : "YYYY-MM-DD HH:mm Z",
      "combine_logs" : true,
      "log_file": "/www/server/mqtt/test/mqtt_test/combined.outerr.log", // 日志目录
      "out_file": "/www/server/mqtt/test/mqtt_test/out.log",
      "error_file": "/www/server/mqtt/test/mqtt_test/err.log",
    }
  ]
}
  • fork模式:单实例多进程,常用于多语言混编,比如php、python等,不支持端口复用,需要自己做应用的端口分配和负载均衡的子进程业务代码。

    缺点:就是单服务器实例容易由于异常会导致服务器实例崩溃。
    
  • cluster模式:多实例多进程,但是只支持node,端口可以复用,不需要额外的端口配置,0代码实现负载均衡。

    优点:就是由于多实例机制,可以保证服务器的容错性,就算出现异常也不会使多个服务器实例同时崩溃。
    

把app.json放进来

在这里插入图片描述
执行命令

在这里插入图片描述
参数说明:

  • name:应用程序名称
  • args:脚本的参数域
  • cwd:应用程序所在的目录
  • script:应用程序的脚本路径
  • log_date_format:
  • node_args:node 的参数域
  • error_file:自定义应用程序的错误日志文件
  • out_file:自定义应用程序日志文件
  • pid_file:自定义应用程序的pid文件
  • min_uptime:最小运行时间,这里设置的是60s即如果应用程序在60s内退出,pm2会认为程序异常退出,此时触发重启max_restarts设置数量
  • max_restarts:设置应用程序异常退出重启的次数,默认15次(从0开始计数)
  • cron_restart:定时启动,解决重启能解决的问题
  • watch:是否启用监控模式,默认是false。如果设置成true,当应用程序变动时, pm2会自动重载。这里也可以设置你要监控的文件。
  • exec_interpreter:应用程序的脚本类型,这里使用的shell,默认是nodejs
  • exec_mode:应用程序启动模式,这里设置的是cluster_mode(集群),默认是fork
  • autorestart:启用/禁用应用程序崩溃或退出时自动重启
  • vizion:启用/禁用vizion特性(版本控制)

五、PM2常用命令

#启动
pm2 start app.json
#杀死pm2进程 
pm2 kill
#显示进程id为 11 的日志
pm2 logs 1
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霍志杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值