[英]Real time data from server using socket
我正在尝试获取来自服务器的实时数据,该服务器具有URL ws://xxx.xxx.xx.12/Geteventcntr/getUserMatchLst/4/696
我不知道如何将其连接到服务器并从重新获得数据
public class OddsActivity extends AppCompatActivity {
private OkHttpClient client;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_odds);
client = new OkHttpClient();
Request request = new Request.Builder().url("ws://xx.xx.xx.xx/Geteventcntr/getUserMatchLst/4/696").build();
EchoWebSocketListener listener = new EchoWebSocketListener();
WebSocket ws = client.newWebSocket(request, listener);
client.dispatcher().executorService().shutdown();
}
private final class EchoWebSocketListener extends WebSocketListener {
private static final int NORMAL_CLOSURE_STATUS = 1000;
@Override
public void onOpen(WebSocket webSocket, Response response) {
}
@Override
public void onMessage(WebSocket webSocket, String text) {
output("Receiving : " + text);
}
@Override
public void onMessage(WebSocket webSocket, ByteString bytes) {
output("Receiving bytes : " + bytes.hex());
}
@Override
public void onClosing(WebSocket webSocket, int code, String reason) {
webSocket.close(NORMAL_CLOSURE_STATUS, null);
output("Closing : " + code + " / " + reason);
}
@Override
public void onFailure(WebSocket webSocket, Throwable t, Response response) {
output("Error : " + t.getMessage());
}
}
private void output(String s) {
Log.d("WebSocket", "output: "+s);
}
}
首先将此行添加到您的gradle中
implementation 'com.neovisionaries:nv-websocket-client:2.4'
实施后,您必须创建一个WebsocketClient
类以进行连接并从服务器获取实时数据。
public class WebsocketClient {
public static String url = "ws://XXX.XXX.XXX/XXX";
private static WebSocketClient mWebSocketClient;
public static void connect_to_server(Context con) {
URI uri;
try {
uri = new URI("ws://XXX.XXX.XXX/XXX");
} catch (URISyntaxException e) {
e.printStackTrace();
return;
}
mWebSocketClient = new WebSocketClient(uri, new Draft_17()) {
@Override
public void onOpen(ServerHandshake serverHandshake) {
Log.e("Websocket", "Opened");
}
@Override
public void onMessage(String s) {
Log.e("OnMessageRecieved>>>",s.toString());
}
@Override
public void onClose(int code, String s, boolean b) {
Log.e("Websocket", code + ": Closed " + s);
}
@Override
public void onError(Exception e) {
Log.e("Websocket", "Error " + e.getMessage());
}
};
if(mWebSocketClient.getConnection().isConnecting()){
}else{
mWebSocketClient.connect();
}
}
}
并从活动连接到它
WebsocketClient.connect_to_server(MainAtivity.this)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.