美文网首页react-native前端
简易版react-native与node端udp通讯

简易版react-native与node端udp通讯

作者: 不伟心 | 来源:发表于2019-11-15 11:27 被阅读0次

    最近做rn项目中做到通讯模块,需要app端与硬件进行通讯,正常的通讯用的都是websocket,但是当app端ip变化的时候,需要app进行广播告知硬件进行相应的改变,这个时候就需要用到upd广播。我们这里用到的是这个库:[react-native-udp](https://github.com/tradle/react-native-udp

    )

    1. 首先 引入库

    npm install --save react-native-udp
    

    2.和原生进行链接

    react-native link react-native-udp
    # OR, if you're using react-native older than 0.31:
    rnpm link react-native-udp
    

    3配置原生模块

    import com.tradle.react.UdpSocketsModule;           // <--- import //
    
    public class MainApplication extends Application implements ReactApplication {
        ...
        @Override
        protected List<ReactPackage> getPackages() {
            return Arrays.<ReactPackage>asList(
                new MainReactPackage(),
                new UdpSocketsModule()              // <- add here //
            );
        }
    }
    
    • package.json
      only if you want to write require('dgram') in your javascript
    {
      "browser": {
        "dgram": "react-native-udp"
      }
    }
    

    3.rn部分

    import dgram from 'react-native-udp';
    import { udpPort } from '../config';
    
    const toByteArray = obj => {
      var uint = new Uint8Array(obj.length);
      for (let i = 0, l = obj.length; i < l; i++) {
        uint[i] = obj.charCodeAt(i);
      }
    
      return new Uint8Array(uint);
    }
    
    export const sendUdpMessage = async (bCast, message) => {
      let socket = dgram.createSocket('udp4')
      const buf = toByteArray(JSON.stringify(message))
      socket.send(buf, 0, buf.length, udpPort, bCast, err => {
        if (err) {
          alert('error')
          socket && socket.close()
          // TODO: 错误处理
          return
        }
        socket && socket.close()
        alert('message was sent')
      })
    }
    

    4. 写一个简单的js 文件 node端进行测联调。

     var dgram = require("dgram");
    
    var server = dgram.createSocket("udp4");
    
    server.on("error", function (err) {
        console.log("server error:\n" + err.stack);
        server.close();
    });
    
    server.on("message", function (msg, rinfo) {
        console.log("server got: " + msg + " from " +
            rinfo.address + ":" + rinfo.port);
    });
    
    server.on("listening", function () {
        var address = server.address();
        console.log("server listening " +
            address.address + ":" + address.port);
    });
    
    server.bind(12347);
    

    相关文章

      网友评论

        本文标题:简易版react-native与node端udp通讯

        本文链接:https://www.haomeiwen.com/subject/gomjictx.html