windows下小程序连接mqtt 连接配置

windows7 环境下,apache-activemq-5.15.10 + nginx-1.16.1 + 微信小程序

搭建环境

一、下载安装activemq http://activemq.apache.org/

安装好之后,启动服务在bin目录下
activemq start

注意配置文件 D:\apache-activemq-5.15.10\conf\activemq.xml

 <transportConnectors>
            <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
            <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>  nodex js 端测试 端口
            <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/> nginx 做代理的端口
        </transportConnectors>

使用node js测试

1.新建测试文件目录 testmqtt
2. 进行 npm 初始化 npm init
3 新建 js_mqtt.js
-------------------------
var mqtt = require('mqtt')
var client  = mqtt.connect('mqtt://localhost:1883')
 
client.on('connect', function () {
  client.subscribe('presence', function (err) {
    if (!err) {
      client.publish('presence', 'Hello mqtt')
    }
  })
})
 
client.on('message', function (topic, message) {
  // message is Buffer
  console.log(message.toString())
  client.end()
})
-------------------------

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rA0hfRXi-1584951278125)(C:\Users\sunxingba\AppData\Roaming\Typora\typora-user-images\1584947559234.png)]

二、nginx 安装并配置ssl

  1. 下载 nginx

    http://nginx.org/en/download.html

  2. 下载 Win64OpenSSL-1_1_1e.exe 并安装 ,用于在windows 下生成证书

    应该使用 Win64OpenSSL-1_1_1e版本。下载地址http://slproweb.com/products/Win32OpenSSL.html

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bto634Zq-1584951278128)(C:\Users\sunxingba\AppData\Roaming\Typora\typora-user-images\1584948025982.png)]

    • 安装 后配置1 配置系统环境变量

      OPENSSL_HOME = D:\OpenSSLWin64\bin

    • 安装后配置2

      在cmd命令中执行如下命令即可:
       set OPENSSL_CONF=D:\OpenSSLWin64\bin\openssl.cfg 
       // 不指定的话再生成证书时可能会找不到该配置 openssl 告警 can't open openssl.cnf
      
  3. 在nginx的conf目录下使用openssl生成ssl证书

    执行命令根据提示填写
    1->openssl genrsa -des3 -out server.key 
    2->openssl req -new -key server.key -out server.csr
    3-> 拷贝server.key并重命名为server.key.org
    4->去除密码,命令:openssl rsa -in server.key.org -out server.key
    5->生成证书文件server.crt, 命令:openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 
    
  4. 修改nginx的配置文件nginx.conf

    
    server {
            listen       443 ssl;# 默认https的监听端口
    		listen 		 1884 ssl;# 配置https的监听端口
            server_name  localhost;# 配置https的服务域名
    
            ssl_certificate      server.crt;# 刚才生成的证书
            ssl_certificate_key  server.key;# 刚才生成的秘钥
    
            ssl_session_cache    shared:SSL:1m;
            ssl_session_timeout  5m;
    
            ssl_ciphers  HIGH:!aNULL:!MD5;
            ssl_prefer_server_ciphers  on;
    		
    		proxy_set_header X-Real_IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X_Forward_For $proxy_add_x_forwarded_for;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
    		
            location / {
    			proxy_pass http://localhost:61614/;
            }
        }
    
  5. 启动nginx服务。

    D:\nginx-1.16.1>nginx.exe
    

6.小程序测试连接

​ 注意:将小程序开发工具的项目设置为 不进行合法性域名校验

​ 微信小程序访问wss 在使用nginx 进行代理一定配置秘钥,否则会出现连接错误

​ 小程序中采用引入 mqtt.2.18.8.min.js 文件的方式 连接mqtt。

const mqtt = require('../../utils/mqtt.2.18.8.min.js')
Page({
  onLoad: function () {
    // 连接mqtt,使用https的协议
      const client = mqtt.connect('wxs://localhost:1884');// 对应nginx的https监听端口
      client.on('connect', function() {
        console.log('连接成功');
      })
      client.on('error', function(e) {
        console.log('连接失败');
        client.reconnect();
      })
      client.on('reconnect', function() {
        console.log('正在重新连接…');
      })
  }
  })
停止nginx 后 会无法连接
VM1538 asdebug.js:1 WebSocket connection to 'wss://localhost:1884/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED

x 后 会无法连接
VM1538 asdebug.js:1 WebSocket connection to ‘wss://localhost:1884/’ failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值