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){}
}
}
ありがとうございました