M V*_*esh 12 mobile android websocket
我正在为服务器开发一个Android客户端,其中要求是将音频流连续交换到基于WebSockets的服务器.
与Web套接字连接时,Android客户端抛出以下错误.
封闭的草案org.java_websocket.drafts.Draft_10@b2fe9b40拒绝握手
但我尝试使用以下web插座uri.连接成功.WS://echo.websocket.org
代码:
URI uri;
try {
// uri = new URI(
// "ws://echo.websocket.org");
uri = new URI(
"ws://serverIP:9090/WebRtc/serverendpoint");
} catch (URISyntaxException e) {
e.printStackTrace();
return;
}
mWebSocketClient = new WebSocketClient(uri) {
@Override
public void onOpen(ServerHandshake serverHandshake) {
Log.i("Websocket", "Opened");
mWebSocketClient.send("Hello from " + Build.MANUFACTURER + " "
+ Build.MODEL);
}
@Override
public void onMessage(String s) {
final String message = s;
runOnUiThread(new Runnable() {
@Override
public void run() {
TextView textView = (TextView) findViewById(R.id.messages);
textView.setText(textView.getText() + "\n" + message);
}
});
}
@Override
public void onClose(int i, String s, boolean b) {
Log.i("Websocket", "Closed " + s);
}
@Override
public void onError(Exception e) {
Log.i("Websocket", "Error " + e.getMessage());
}
};
mWebSocketClient.connect();
Run Code Online (Sandbox Code Playgroud)
我尝试了浏览器的echo测试,用于我使用的Web套接字(ws:// serverIP:9090/WebRtc/serverendpoint).它正在正确连接.但是,当我从手机或模拟器尝试时,没有任何作用.
请帮帮我.
Alb*_*tNf 18
我刚刚找到另一种简单的方法来摆脱这个问题.
改变以下行
mWebSocketClient = new WebSocketClient(uri){
Run Code Online (Sandbox Code Playgroud)
至
mWebSocketClient = new WebSocketClient(uri, new Draft_17()){
Run Code Online (Sandbox Code Playgroud)
我在我的Serverlogs中找到了提示:
用户代理:[unset]请求WebSocket版本[8],Jetty支持版本:[13]
正如您在下面的链接中看到的,版本8是Draft_10,版本13是Draft_17.
我发现了这个问题。
实际上是Java提供的web socket jar文件的问题。
相反,我使用了 Autobahn(Android 特定 Web 套接字开源https://github.com/tavendo/AutobahnAndroid)。
现在可以连接到 Web 套接字服务器了。
归档时间: |
|
查看次数: |
9736 次 |
最近记录: |