websocket连接说明
<h2>web端以及移动端websocket连接说明:</h2>
<ol>
<li>连接之前先向终端发送图片推送指令(ahgw/console/devicePush/sendCommand),服务端会同步返回视频预览IP,执行下一步,否则继续执行第1步.</li>
<li>通过ip对应的地址进行websocket连接,连接失败,进行第一步操作,连接成功,进行视频预览</li>
</ol>
<p><font color="orange">示例连接</font>:ws://ip:10238/media/ws?clientType=1&clientSn=XXX</p>
<h2>终端连接说明:</h2>
<ol>
<li>在接收到图片预览指令后,与服务端进行ws连接;连接头信息中包含Client-Type 0,Client-SN,timestamp:UTC时间戳(ms),token:对timestamp进行AES加密后的数据(AES/ECB/PKCS5Padding -> HexString)</li>
<li>当收到停止预览指令时,断开ws连接,停止传图。</li>
</ol>
<p><font color="orange">示例连接</font>:ws://ip:10238/media/ws?clientType=0&clientSn=XXX&timestamp=XXXX&&token=XXXX</p>
<ul>
<li>备注:
clientType=0 表示ws连接的类型,终端传0
timestamp 表示UTC时间戳(ms)
token表示 clientSn+timestamp 经过AES<font color="red">(AES/ECB/PKCS5Padding -> HexString)</font>加密后的数据</li>
</ul>
<h2>服务端AES加解密示例:</h2>
<p><font color="orange">加密:</font>
byte[] result = SecureUtil.aes(key.getBytes(StandardCharsets.UTF_8)).encrypt(context);
return Hex.encodeHexString(result);
<font color="orange">解密:</font>
byte[] reqBytes = Hex.decodeHex(content);
byte[] result = SecureUtil.aes(key.getBytes(StandardCharsets.UTF_8)).decrypt(reqBytes);
return new String(result);</p>