onconnectしてしばらく動作後、接続が切れてしまう



  • 起動後onconnectもできて、しばらくは問題なく動作しているのですが、
    60秒ほど経過すると必ず切断され、obnizがオフラインになってしまいます。
    発生原因がわかるようでしたらアドバイスいただきたいと思います。

    ・ラズベリーパイ3B+で nodejsにより(node V15.3.0)
    ・センサーから数秒ごとにUARTで数バイトのデータを受けて表示する、というアプリを動作させています。
     (UART受信イベントにて uart.onreceive = function(data, text) {
    obnizとラズパイは、同じWifiの同じネットワークセグメントにおり、local_connectのはずですが
    いきなりWebSocketが切断されているようです。

    nodeのコンソールエラー

    /home/pi/Share/Nodejs/GreenHouse2/node_modules/obniz/dist/src/obniz/ObnizConnection.js:196
                throw new ObnizError_1.ObnizOfflineError();
                      ^
    
    ObnizOfflineError: obniz is not online.
        at Obniz.send (/home/pi/Share/Nodejs/GreenHouse2/node_modules/obniz/dist/src/obniz/ObnizConnection.js:196:19)
        at Display.clear (/home/pi/Share/Nodejs/GreenHouse2/node_modules/obniz/dist/src/obniz/libs/embeds/display.js:119:24)
        at obniz.onclose (/home/pi/Share/Nodejs/GreenHouse2/GreenHouse2.js:105:16)
        at Obniz._runUserCreatedFunction (/home/pi/Share/Nodejs/GreenHouse2/node_modules/obniz/dist/src/obniz/ObnizConnection.js:286:13)
        at Obniz.wsOnClose (/home/pi/Share/Nodejs/GreenHouse2/node_modules/obniz/dist/src/obniz/ObnizConnection.js:358:18)
        at WebSocket.emit (node:events:376:20)
        at WebSocket.emitClose (/home/pi/Share/Nodejs/GreenHouse2/node_modules/ws/lib/websocket.js:191:10)
        at TLSSocket.socketOnClose (/home/pi/Share/Nodejs/GreenHouse2/node_modules/ws/lib/websocket.js:850:15)
        at TLSSocket.emit (node:events:388:22)
        at node:net:661:12 {
      code: 1
    }
    


  • This post is deleted!


  • 補足、追加情報があります
    onconnectしたまま、
    uart.onreceiveによる受信処理をせずに放置しておくと、Nodeが以下のエラーを出す場合がありました

    「192.168.0.16」が obniz Board のIPアドレスであり、
    obniz Board がポート80の接続を拒否しているようです。

    local websocket error. Error: connect ECONNREFUSED 192.168.0.16:80
        at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1133:16) {
      errno: -111,
      code: 'ECONNREFUSED',
      syscall: 'connect',
      address: '192.168.0.16',
      port: 80
    }
    

    コンソールエラーに出ていたソース「ObnizConnection.js:358:18」も見ましたが、
    いずれもClose処理の内容で、有効な情報は得られませんでした

    やはり、何らかのタイミングで、obniz Board がポート80を閉じたか接続拒否している
    可能性がないでしょうか?



  • debugprintができることを忘れていました。さっそく再テストしました。
    推定原因などわかりますでしょうか
    きっかり定周期60秒ごとに、
    closed from remote event=1006 で切断されています。
    event=1006というのが何なのかわかりません。

    send: [{"system":{"ping":{"key":[0,0,1,118,25,155,75,152,0,0,0,3]}}}]
    この「ping」は無い場合があります。

    (****-****は、obniz IDですので消しています)

    start
    [obniz ****-****] send: [{"display":{"clear":true}}]
    [obniz ****-****] send: [{"display":{"text":"start"}}]
    [obniz ****-****] send via local
    [obniz ****-****] send: [{"system":{"ping":{"key":[0,0,1,118,25,155,75,152,0,0,0,3]}}}]
    [obniz ****-****] send via local
    [obniz ****-****] closed from remote event=1006
    2020-11-30 23:42:56 closed
    [obniz ****-****] connecting to wss://obniz.io/obniz/****-****/ws/1?obnizjs=3.10.1&accept_binary=true
    [obniz ****-****] ws connected
    [obniz ****-****] {"ws":{"redirect":"wss://9ws.obniz.io"}}
    [obniz ****-****] WS connection changed to wss://9ws.obniz.io
    [obniz ****-****] connecting to wss://9ws.obniz.io/obniz/****-****/ws/1?obnizjs=3.10.1&accept_binary=true
    [obniz ****-****] ws connected
    [obniz ****-****] {"ws":{"ready":true,"obniz":{"hw":"obnizb1","firmware":"3.4.2"},"local_connect":{"ip":"192.168.0.17"}}}
    [obniz ****-****] local connect to ws://192.168.0.17
    [obniz ****-****] connected to ws://192.168.0.17
    2020-11-30 23:42:58 connected
    [obniz ****-****] send: [{"ws":{"reset_obniz_on_ws_disconnection":false}}]
    [obniz ****-****] send: [{"system":{"keep_working_at_offline":true}}]
    


  • @Pugeore さん

    こんにちは。
    内部で使用しているモジュールがもしかしたら最新のnodejsに対応していないのかもしれません。

    node V15はnodejsの中でも実験的な機能を入れているバージョンで、不安定になることがあります。

    Active LTSであるnode V14系ではいかがでしょうか。

    また、obnizデバイスのOSバージョン/obnizjsのバージョンも記載いただけるとより詳細がわかるかもしれません。



  • @キドコウヘイ さん
    アドバイスありがとうございます。
    nodeのバージョンを、v14.15.1 (with npm 6.14.8) にダウンさせたところ、
    60秒ごとに切断されることはなくなりました。
    ただ、時々、10分ぐらいでsocket切断されますが、だいぶマシになりました。
    ときどき切断される件は、致命的ではないのでいったん保留で、
    まずはこの状態をベースに、本来のアプリ再開に戻れます。

    ご指摘のように、V15はまだ不安定なのでしょうね
    これからはLTSを使うようにします。
    (obnizOSも最新3.4.3に戻しておきました。)


Log in to reply
 

SUGGESTED TOPICS

  • 9
  • 11
  • 5
  • 3
  • 2
  • 5
  • 5
  • 2