我正在为 Android 构建一个简单的 websocket 服务器。(让我们说 3.2 - 我尝试了一些早期的 Android 版本,结果相同)。在 Android 上尝试代码之前,我在 Windows、Linux 上的 Java SE 下对其进行了测试。它适用于 Chrome 和 Firefox 。但是在Android上它不起作用。请查看代码中的注释。
简而言之:
- 我成功通过握手,浏览器确认连接正常。
- 我很高兴通过 Websocket 收到来自浏览器的所有消息
- 我不能发送任何东西:它只是没有到达 javascript 回调。在重试(有时立即)后,浏览器关闭 websocket。
这是代码:
//BufferedOutput myout=new BufferedOutput(mysocket.getOutputStream()));
//myout was successfully used for handshaking before
String msg=”I want to send this”;
try {
myout.write(129);//129=0x81); text frame 0x81=129
int payloadlen=msg.length();
myout.write(payloadlen);
byte[] bts=msg.getBytes(Charset.forName("UTF-8"));
myout.write(bts,0,payloadlen);
myout.flush();//after this command client Browser closes websocket
//firefox also gives error
}
catch(IOException ee)
{
System.out.println("Error sending websocket message"+ee);
try{myclose();}catch(IOException eio){}
}
}
谢谢