- 如何解决TCPSocket.onXXX的多次回调问題?
小程序利用TCPSOCKET和后端的python文件进行连接,小程序在TCPSOCKET多次重新连接后,监听函数也会随之多次觸发回调函数,要怎么解决这种状况? [图片] [图片] js代码 const app = getApp() const tcp = wx.createTCPSocket() Page({ data: { UMsg:'', SMsg:'', ConntectStatus:'closed', }, connectgo:function(){ if(this.data.ConntectStatus=='closed'){ tcp.connect({ address:'localhost', port:8080 }) tcp.onClose(this.ifclose) tcp.onConnect(this.ifconnect) tcp.onMessage(this.ifmesggage) } else{ wx.showToast({ title: 'Is Connect', icon: 'error', }) } }, connectclose:function(res){ if(this.data.ConntectStatus=='connected'){ tcp.close() } else{ wx.showToast({ title: 'No Connect', icon:'error', }) } }, UMsgput:function(res){ if(this.data.ConntectStatus=='connected'){ this.setData({ UMsg:res.detail.value }) tcp.write(this.data.UMsg) console.log('User Send message: ',this.data.UMsg) } else{ wx.showToast({ title: 'No Connect', icon: 'error', }) } }, ifconnect:function(){ console.log('connect success') this.setData({ ConntectStatus:'connected' }) }, ifmesggage:function(res){ let unit8Arr = new Uint8Array(res.message) ; let encodedString = String.fromCharCode.apply(null, unit8Arr), decodedString = decodeURIComponent(escape((encodedString)));//没有这一步中文会乱码 console.log('Server send back message: ',decodedString); this.setData({ SMsg:decodedString }) }, ifclose:function(res){ console.log('close connect') this.setData({ ConntectStatus:'closed' }) tcp.offClose(this.ifclose) tcp.offConnect(this.ifconnect) tcp.offMessage(this.ifmesggage) }, }) py代码 import imp import socket def main(): #创建套接字 tcp_server=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 绑定本地信息 tcp_server.bind(('0.0.0.0',8080)) # 套接字主动变被动 listen) tcp_server.listen(128) while True: #循环为多个客户端服务 print('*****等待新的客户到来*****') # accept产生新的套接字 new_client_socket,client_addr=tcp_server.accept() # accept返回元组 #**************************************************************以下为具体服务流程 print('新的客户已经到来') # 等待 print(client_addr) while True: #循环为一个客户端服务多次 # 接受客户请求 recv_data=new_client_socket.recv(1024) # 如果recv解堵塞,要么客户端发送数据,要么客户端关闭调用close if recv_data: print("客户端发来的请求是:%s" % recv_data.decode('gbk')) # 回送信息给客户端 send_msg = recv_data.decode('gbk') new_client_socket.sendall(send_msg.encode('gbk')) print("回送信息给客户端:", recv_data.decode('gbk')) else: print("此客户端关闭") break #***************************************************个性化服务结束 # 关闭accept返回的套接字,不会在为这个客户服务 new_client_socket.close() print("————————已经服务完毕————————") # 监听套接字关闭会导致不能再次等待新客户到来 tcp_server.close if __name__ =="__main__":\ main() js代码片段: https://developers.weixin.qq.com/s/pYclLamj7Kxn
2022-02-18 - WebSocket opening handshake timed out?
js里面创建了一个WebSocket连接,errMsg说connectSocket:ok,但过了一会后又出现错误 [图片] [图片][图片] 服务端用的python ,显示发生異常 [图片] 我不清楚这个客户端发送的数据是什么,检查recv_data变量是一串乱码 b'\x16\x03\x01\x02\x00\x01\x00\x01\xfc\x03\x03\x86]6\xb9\xfe\xf4\x17=\x87\x7f1[\xae4\xabzH\xaa\xe5\xe6\x1f8HF\xbd\xc4\x83\x89\xa1\r\xc1\x11 Jag\xf0\x02\xf4\x1d\x0b\x92Ix\xf0\xd2S!,4\xaf\xca&(\xfd\xd9\xa3\x18\xf7$ \xa5\xee\xcc#\x00 \n\n\x13\x01\x13\x02\x13\x03\xc0+\xc0/\xc0,\xc00\xcc\xa9\xcc\xa8\xc0\x13\xc0\x14\x00\x9c\x00\x9d\x00/\x005\x01\x00\x01\x93\xba\xba\x00\x00\x00\x00\x00\x0e\x00\x0c\x00\x00\tlocalhost\x00\x17\x00\x00\xff\x01\x00\x01\x00\x00\n\x00\n\x00\x08\n\n\x00\x1d\x00\x17\x00\x18\x00\x0b\x00\x02\x01\x00\x00#\x00\x00\x00\x05\x00\x05\x01\x00\x00\x00\x00\x00\r\x00\x12\x00\x10\x04\x03\x08\x04\x04\x01\x05\x03\x08\x05\x05\x01\x08\x06\x06\x01\x00\x12\x00\x00\x003\x00+\x00)\n\n\x00\x01\x00\x00\x1d\x00 \xe1\x0c\x94\xbe\x88\x1b\x0e\x98\xc9\xa9W\x0e \x98j\xf0\x98\xed\xb4\xa3R\xde\xb0\xc6H?\xafq%\xb9\xd27\x00-\x00\x02\x01\x01\x00+\x00\x0b\n\x9a\x9a\x03\x04\x03\x03\x03\x02\x03\x01\x00\x1b\x00\x03\x02\x00\x02\xaa\xaa\x00\x01\x00\x00\x15\x00\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' python的代码是朋友写的,我对TCP连接也不熟悉,摸索的时候出现了这么一个错誤,请问有大神知道这是怎么回事吗? python 完整代码: import imp import socket import json def main(): #创建套接字 tcp_server=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 绑定本地信息 tcp_server.bind(('localhost',8080)) # 套接字主动变被动 listen) tcp_server.listen(128) while True: #循环为多个客户端服务 print('*****等待新的客户到来*****') # accept产生新的套接字 new_client_socket,client_addr=tcp_server.accept() # accept返回元组 #**************************************************************以下为具体服务流程 print('新的客户已经到来') # 等待 print(client_addr) while True: #循环为一个客户端服务多次 # 接受客户请求 recv_data=new_client_socket.recv(1024) # 如果recv解堵塞,要么客户端发送数据,要么客户端关闭调用close if recv_data: print("客户端发来的请求是:%s" % recv_data.decode('gbk')) # 回送信息给客户端 new_client_socket.send('-----ok-----'.encode('gbk')) else: print("此客户端关闭") break #***************************************************个性化服务结束 # 关闭accept返回的套接字,不会在为这个客户服务 new_client_socket.close() print("————————已经服务完毕————————") # 监听套接字关闭会导致不能再次等待新客户到来 tcp_server.close if __name__ =="__main__":\ main()
2022-02-15 - view {{data}}属性不能显示数组里的对像值?
在js里面有这么一个容器 [图片] 通过函数对其中一个对象给了一个子符串 [图片] 我想通过view显示里面的内容,但这样不知道为什么不行? [图片] [图片]
2022-02-14 - 小程序如何调用python算法?
目前我自己了解是把算法包装成一个API再由小程序通过we.request调用,但我沒学过python,算法是朋友写的,小程序的前端知识也是刚学完,后端我是按网上教程用phystudy建了个本地服务器和数据库,对于如何调用这个算法有点迷茫,有大神可以给点建议么?
2022-02-11