繁体   English   中英

适用于android,java的websocket服务器

[英]websocket server for android, java

我正在为Android构建一个简单的websocket服务器。 (让我们说3.2-我尝试了一些较早的Android版本,但结果相同)。 在Android上尝试代码之前,我在Windows,Linux上的Java SE下对其进行了测试。 Chrome和Firefox可以正常工作。 但是在Android上它不起作用。 请查看代码中的注释。

简而言之:

  1. 我成功通过了握手,浏览器确认连接正常。
  2. 我很高兴通过Websocket从浏览器收到所有消息
  3. 我无法发送任何内容:它只是无法到达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){}
 }
}

谢谢

您在哪里运行此代码? 在活动中或服务中。

请注意,如果您需要创建一个自定义的Web服务器并需要在Android上运行它,则应将其实现为在其自己的线程上运行的服务。

如果您在依赖于android版本的Activity上运行它,则主线程不应(或不能依赖于android版本)对主线程执行I / O操作。

希望对您有所帮助。

我解决了 原因是在Android的情况下,我在通过SAME连接之前发送了一些内容。 而且,这种“错误”虽然是错误的,但在Chrome / Firefox中并未产生任何错误。 我花了两天时间并逐字节比较了两种情况下的Wireshark结果:我的Sun Java Websocket Server和我的Android Websocket Server。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM