迅鸣物联网文档

迅鸣物联网文档


共享空间预约推送接口文档

<h1>共享空间预约消息推送接口文档</h1> <h2>介绍</h2> <p>TCP客户端长连接模式</p> <p>地址: 39.103.95.22 端口: 5011</p> <p>认证信息:<code>auth:应用ID</code> 会话心跳: 连续3次30s未收到客户端数据,预约推送服务端将主动断开与客户端的连接。 推送数据:</p> <h2>消息内容</h2> <p>预约创建消息:</p> <pre><code>{     "action": "CreateReservation",     "body": {         "id": xx,         "appid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",         "space": {             "name": "xxx房间",             "address": "xxx楼xxx层xxx号"         },         "user": {             "uid": "uxxxxxxxxxx",             "did": x,             "d_name": "xxxx部门",             "phone": "xxxxxxxxxxx",             "card_number": "No.10001",             "name": "张三"         },         "start_time": "2023-01-31 17:00:00",         "end_time": "2023-01-31 17:30:00",         "note": "本次预约主题为,党建会议"     } }</code></pre> <p>预约删除消息:</p> <pre><code>{     "action": "DeleteReservation",     "body": {         "id": xx,         "appid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",         "space": {             "name": "xxx房间",             "address": "xxx楼xxx层xxx号"         },         "user": {             "uid": "uxxxxxxxxxx",             "did": x,             "d_name": "xxxx部门",             "phone": "xxxxxxxxxxx",             "card_number": "No.10001",             "name": "张三"         },         "start_time": "2023-01-31 17:00:00",         "end_time": "2023-01-31 17:30:00",         "note": "本次预约主题为,党建会议"     } }</code></pre> <h2>参数解析:</h2> <ul> <li>action: CreateReservation创建预约,DeleteReservation取消预约</li> <li>body:预约消息体 <ul> <li>id:预约消息ID号,唯一,用于定位哪条消息</li> <li>appid:应用id</li> <li>space:预约房间信息 <ul> <li>name:房间名称</li> <li>address:房间地址</li> </ul></li> <li>user:预约者信息 <ul> <li>uid: 预约者用户ID 唯一</li> <li>did: 用户的部门id</li> <li>d_name: 用户部门名称</li> <li>phone:用户联系方式</li> <li>card_number:自定义用户ID,可用于员工工号等</li> <li>name:用户备注,用户姓名</li> </ul></li> <li>start_time: 预约开始时间</li> <li>end_time: 预约结束时间</li> <li>note:本次预约会议主题</li> </ul></li> </ul> <h2>使用举例:</h2> <pre><code>import os import socket import time import threading import json class TCPSocket(object): def __init__(self, size, ip, port): """ @param size: 报文上限大小 @param ip: ip地址 @param port: 端口 """ self.sk = None self.size = size self.format = "utf8" self.ip_port = (ip, port) # 心跳频率 self.heart_interval = 25 self.adapt_time = False # 建立socket连接 def connect(self): self.sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: self.sk.connect(self.ip_port) except Exception as e: print("connect to server failed,prepare to reconnect", e) self.reconnect() # 重新连接 5s/次 def reconnect(self): print("try to reconnect") while True: try: self.sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sk.connect(self.ip_port) self.login_send() print('client start connect to host/port:{}'.format(self.ip_port)) break except ConnectionRefusedError: print( 'socket server refused or not started, reconnect to server in 5s .... host/port:{}'.format( self.ip_port)) time.sleep(5) except Exception as e: print('do connect error:{}'.format(str(e))) time.sleep(5) print("reconnect successfully!!!") # 发送登录验证 def login_send(self): try: login_msg = "auth:123456" self.sk.send(login_msg.encode(self.format)) print("[tcp client] send logon message:{}".format(login_msg.replace(os.linesep, ""))) except socket.error: print('socket error,do reconnect') time.sleep(5) except Exception as e: print(e) time.sleep(5) def rec(self): while True: try: message = self.sk.recv(self.size) messages = self.parse_response_json(message) if messages: print(messages) else: print("no message from server or messages are not valid:{}".format(messages)) except socket.error as e: print(e) time.sleep(5) self.reconnect() except Exception as e: print(e) time.sleep(5) # 间隔固定时间发送心跳 def heartbeats(self): while True: try: msg = "ping" self.sk.send(msg.encode(self.format)) print("[tcp client] send heart message:{}".format(msg.replace(os.linesep, ""))) except socket.error: print('socket error,do reconnect') self.reconnect() except Exception as e: print('other error occur', e) time.sleep(5) self.reconnect() time.sleep(self.heart_interval) def parse_response_json(self, data: bytes): msgs = [] try: data_list = data.decode(self.format).split(os.linesep) data_list = list(filter(lambda x: x.strip().startswith("{"), data_list)) for msg in data_list: msg = json.loads(msg) msgs.append(msg) return msgs except Exception as e: print(e) return None if __name__ == '__main__': socket1 = TCPSocket(1024, "ip地址", 端口) socket1.connect() socket1.login_send() t1 = threading.Thread(target=socket1.rec) t2 = threading.Thread(target=socket1.heartbeats) t1.start() t2.start()</code></pre>

页面列表

ITEM_HTML