评论

使用小程序UDP API功能,实现调试本地UDP服务

使用小程序UDP API功能,实现调试本地UDP服务

小程序在基础库2.7.0,开始提供UDP API功能,它可以创建一个UDP SOCKET实例,并与局域网内的UDP服务,或者配置过的服务器域名进行通信。小程序的UDP API没有限制端口,只要你的防火墙没有拦截就行。

在开发工具中调试时,我一直未能收到服务端的回复,多次查看文档,发送需要先调用udp.bind(),然后才能收到数据。你在使用时,请注意这个问题。另外,udp.bind()不用调用多次,但是每次重新进入页面时,需要重新调用一次。

使用小程序UDP 功能,非常简单。

1,创建UDP Socket实例,使用wx.createUDPSocket()。

var u = null;
    u = wx.createUDPSocket()
    u.bind() // 只进行一次绑定

2,设置监听器。

    u.onError(that.uErr)
  u.onListening(that.uListen)
  u.onMessage(that.uMsg)

3,发送数据,不需要先连接。

    u.write({
        address: ip,
        port: port,
        message: msg,
      })

以上,是使用UDP的一些核心代码,你可以根据你的业务需求加以完善。我的小程序实现了一个功能,使用小程序的UDP API功能,可以调试局域网内的UDP服务。这个功能,对于开发排查一些问题来说,非常有用。

调试界面如下:

对于一些使用设备服务,或者本地开发环境,可以作为UDP调试客户端使用。

最后一次编辑于  03-25  
点赞 2
收藏
评论

1 个评论

  • 学名是舒•Algebra•睿
    学名是舒•Algebra•睿
    08-26
    请问大佬遇到过
    {errCode: -2, errNum: 111, errMsg: "write socket fail: errno:111 errmsg:Connection refused"}
    这个错误吗?
    
    08-26
    赞同
    回复 8
    • 神经蛙
      神经蛙
      发表于小程序端
      08-27

      看看udp官方文档有没有这个代号报错,然后使用豆子工具我写的udp调试连接下你的udp服务,看看是不是也报错,看看是不是防火墙原因?或者用你的udp客户端在开发环境连接我的公开udp回声服务,

      08-27
      回复
    • 神经蛙
      神经蛙
      发表于小程序端
      08-27

      遇到问题不要怕,用排除法

      08-27
      回复
    • JIN
      JIN
      08-27回复神经蛙
      大佬 我在微信小程序中使用wx.createUDPSocket这个api在真机调试上出现{errCode: -2, errNum: 13, errMsg: "send socket fail: errno:13 errmsg:Permission denied"}这个错误捕获,本地开发调试器上没问题,为什么呀
      08-27
      回复
    • 神经蛙
      神经蛙
      08-27回复JIN
      你换个手机试试呢?都是一样的问题吗?看报错是权限的问题
      08-27
      回复
    • JIN
      JIN
      08-28回复神经蛙
      换了个手机也是一样的错误,怎么解决呀 大佬
      08-28
      回复
    查看更多(3)
登录 后发表内容