我一直试图通过WebSocket发送二进制数据是徒劳的。
数据:
$buff=chr(1);
$buff.=chr(2);
$buff.=chr(0);
$buff.=chr(0);
$buff.=chr(0);
$buff.=chr(6);
$buff.=chr(1);
$buff.=chr(6);
$buff.=chr(0);
$buff.=chr(192);
$buff.=chr(0);
$buff.=chr(1);
它使用PHP,但我无法实现我想要使用的PHP,我只能依赖JavaScript。
PHP
这很好用:
$length = strlen($this->buff);
$sent = socket_write($socket, $this->buff, $length);
JS
这个没有:
var data="<?= $buff ?>";
WEB_SOCKET_SWF_LOCATION="WebSocketMain.swf";
var ws= new WebSocket("ws://10.0.0.60:502");
ws.onopen=function(){
ws.send(data);
}
要发送的所需数据:
01 02 00 00 00 06 01 06 00 C0 00 01
WebSocket发送的数据:
47 45 54 20 2F 20 48 54 54 50 2F 31 2E 31 0D 0A 48 6F 73 74
3A 20 31 30 2E 30 2E 30 2E 36 30 3A 35 30 32 0D 0A 43 6F 6E
6E 65 63 74 69 6F 6E 3A 20 55 70 67 72 61 64 65 0D 0A 50 72
61 67 6D 61 3A 20 6E 6F 2D 63 61 63 68 65 0D 0A 43 61 63 68
65 2D 43 6F 6E 74 72 6F 6C 3A 20 6E 6F 2D 63 61 63 68 65 0D
0A 55 70 67 72 61 64 65 3A 20 77 65 62 73 6F 63 6B 65 74 0D
0A 4F 72 69 67 69 6E 3A 20 68 74 74 70 3A 2F 2F 6C 6F 63 61
6C 68 6F 73 74 0D 0A 53 65 63 2D 57 65 62 53 6F 63 6B 65 74
2D 56 65 72 73 69 6F 6E 3A 20 31 33 0D 0A 55 73 65 72 2D 41
67 65 6E 74 3A 20 4D 6F 7A 69 6C 6C 61 2F 35 2E 30 20 28 57 ...
如何使用WebSocket发送正确的数据?