小程序在基础库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调试客户端使用。
请问大佬遇到过 {errCode: -2, errNum: 111, errMsg: "write socket fail: errno:111 errmsg:Connection refused"} 这个错误吗?
看看udp官方文档有没有这个代号报错,然后使用豆子工具我写的udp调试连接下你的udp服务,看看是不是也报错,看看是不是防火墙原因?或者用你的udp客户端在开发环境连接我的公开udp回声服务,
遇到问题不要怕,用排除法