我已经使用Ratchet编写了套接字PHP代码.这是简单的代码,当我从Web发送和获取消息时可以使用-JavaScript:
use Ratchet\MessageComponentInterface; class Chat implements MessageComponentInterface{ protected $clIEnts; public function __construct(){ $this->clIEnts = new SplObjectStorage(); } function onopen(\Ratchet\ConnectionInterface $conn) { echo "DID Open\n"; $this->clIEnts->attach($conn); } function onClose(\Ratchet\ConnectionInterface $conn) { echo "DID Close\n"; $this->clIEnts->detach($conn); } function one rror(\Ratchet\ConnectionInterface $conn, \Exception $e) { echo "The following error occured: ". $e->getMessage(); } function onMessage(\Ratchet\ConnectionInterface $from, $msg) { $msgObj = Json_decode($msg); echo $msgObj->msg; foreach($this->clIEnts as $clIEnt){ if($clIEnt !== $from){ $clIEnt->send($msg); } } } }
问题是当我使用Java客户端时-来自AndroID App.我使用Activity中的线程.它没有例外,没有错误. clIEnt.isConnected()为true.但是没有服务器代码没有被调用-onopen方法,onMessage等.我怎样才能解决这个问题. IOS的情况几乎相同.客户端连接到服务器,但是其中一些棘轮方法被调用.仅从JavaScript调用它们. Java代码:
new Thread(new Runnable() { @OverrIDe public voID run() { try { clIEnt = new Socket("XX.XX.XX.XX", 2000); printWriter = new PrintWriter(clIEnt.getoutputStream()); printWriter.write("AndroID Message"); printWriter.flush(); printWriter.close(); clIEnt.close(); } catch (Exception e) { e.printstacktrace(); } } }).start();
解决方法:
尝试用于
安卓:https://github.com/TooTallNate/Java-WebSocket
的iOS:https://github.com/square/SocketRocket
因为棘轮是WebSocket.并且您的主机名应以ws://开头
以上是内存溢出为你收集整理的javascript-来自Android和IOS客户端的棘轮套接字全部内容,希望文章能够帮你解决javascript-来自Android和IOS客户端的棘轮套接字所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)