Websocket 如何在openshift online上运行MOSQUITO mqtt代理

Websocket 如何在openshift online上运行MOSQUITO mqtt代理,websocket,openshift,mqtt,mosquitto,Websocket,Openshift,Mqtt,Mosquitto,有没有人成功地在计算机上运行 有两个相关的问题,但并不能真正解决所有问题: 。它运行JBoss Fuse,需要服务器上的SNI功能或客户端上的端口转发 。作者提到运行mosquitto,但没有详细说明如何运行 到目前为止已经完成的工作: 我运行了一个PythonWebSocket服务器,从而验证了openshift确实通过DIY盒带很好地支持websocket 我还编译了mosquitcho,并在本地运行它 从这里开始,让mosquitto在openshift上运行的具体步骤是什么 最后

有没有人成功地在计算机上运行

有两个相关的问题,但并不能真正解决所有问题:

  • 。它运行JBoss Fuse,需要服务器上的SNI功能或客户端上的端口转发
  • 。作者提到运行mosquitto,但没有详细说明如何运行
到目前为止已经完成的工作:

  • 我运行了一个PythonWebSocket服务器,从而验证了openshift确实通过DIY盒带很好地支持websocket
  • 我还编译了mosquitcho,并在本地运行它

从这里开始,让mosquitto在openshift上运行的具体步骤是什么

最后我让它在openshift上运行,不过配置最简单。以下是关键步骤:

  • 使用openshift
    DIY
    盒带获得websocket支持,该支持公开外部端口
    8000
    ,并路由到内部端口
    8080
    ,该端口位于由
    openshift\u DIY\u IP
    指定的虚拟IP地址上
  • config.mk
    中关闭以下所有功能的情况下编译mosquitto,以避免在openshift中安装大量软件包:
    使用\u-TLS
    使用\u-TLS\u-PSK
    使用\u-THREADING
    使用\u-SRV
    使用\u-UUID
    使用\u-DOCS
    使用\u-SOCKS
  • 修改mosquitto的
    Makefile
    ,注释掉要从
    DOCSDIR
    安装的命令。这似乎是MOSQUITO中的一个小错误,因为如果关闭了带有文档的
    ,则不应尝试从
    DOCSDIR
    安装
  • config.mk
    中使用_WEBSOCKETS
  • 打开
    
    
  • 修改文件
    src/webockets.c
    。在函数
    mosq\u websockets\u init()
    的第625行,添加一行
    info.iface=listener->host,在
    info.user=user的行下方。这是为了让mosquitto能够绑定到openshift DIY设备中的虚拟IP地址。默认情况下,MOSQUITO只允许您为任何IP地址绑定到
    0.0.0
    。这似乎是mosquitto和libwebosockets之间的断开连接
  • 安装
    libwebsockets
    libwebsockets-devel
    软件包
  • 运行
    make
    构建MOSQUITO
  • 假设您要将MOSQUITO安装到
    。/mosrun
    目录。创建目录。运行
    make prefix=DESTDIR=$(pwd)/../mosrun安装
  • 删除
    。/mosrun
    下除
    sbin
    以外的所有文件夹
    cd../mosrun/sbin
    cp/usr/lib/libwebsockets.so.7.
    。调整库存libwebsockets库的源路径
  • https://github.com/jpmens/simple-mqtt-websocket-example
    。将它们放入您的
    mosrun/sbin/simpleweb
    目录中
  • 修改
    mosrun/sbin/simpleweb/config.js以使用openshift DIY域名和端口8000。这是javascript从浏览器连接到DIY服务器的地方
    
  • 创建一个mosquitto配置文件
    mosrun/sbin/mosquitto.conf
    ,其中包含四行:
    listener 8080
    协议websockets
    http_dir simpleweb
    连接消息
    。使用实际DIY虚拟IP地址代替
  • 将整棵树复制到您的openshift DIY装备中
  • 使用浏览器从浏览器浏览到您的DIY域,这样您将看到默认的服务器页面
  • 修改openshift
    .openshift/action\u hooks/start
    ../stop
    脚本以注释掉现有命令。按下openshift。现在,您应该无法连接到默认服务器,但设备正在运行
  • 进入您的mosquito
    mosrun/sbin
    目录
  • 运行
    LD\u库\u路径=/mosquitto-cmosquitto.conf-v
    启动mosquitto
  • 浏览你的
    diy yourdomain.rhcloud.com:8000/index.html
    。您将看到从jpmen的github repo复制的mqtt websockets测试页面
下一步是将树移动到DIY git树中。修改启动和停止钩子以启动和停止MOSQUITO,而不是默认服务器。以及一个在openshift gear上运行的脚本,用于从实际的openshift环境变量创建
config.js
mosquitto.conf


两个帖子非常有助于指导您完成构建mosquitto的步骤:,和

最后我让它在openshift上运行,不过配置最简单。以下是关键步骤:

  • 使用openshift
    DIY
    盒带获得websocket支持,该支持公开外部端口
    8000
    ,并路由到内部端口
    8080
    ,该端口位于由
    openshift\u DIY\u IP
    指定的虚拟IP地址上
  • config.mk
    中关闭以下所有功能的情况下编译mosquitto,以避免在openshift中安装大量软件包:
    使用\u-TLS
    使用\u-TLS\u-PSK
    使用\u-THREADING
    使用\u-SRV
    使用\u-UUID
    使用\u-DOCS
    使用\u-SOCKS
  • 修改mosquitto的
    Makefile
    ,注释掉要从
    DOCSDIR
    安装的命令。这似乎是MOSQUITO中的一个小错误,因为如果关闭了带有文档的
    ,则不应尝试从
    DOCSDIR
    安装
  • config.mk
    中使用_WEBSOCKETS
  • 打开
    
    
  • 修改文件
    src/webockets.c
    。在函数
    mosq\u websockets\u init()
    的第625行,添加一行
    info.iface=listener->host,在
    info.user=user的行下方。这是为了让Mosquetto能够绑定