Я использую mockwebserver для создания сервера веб-сокетов и использую webview для загрузки URL-адреса индекса, чтобы клиент отправил мне сообщение, и я отправил некоторые данные обратно и вошел в систему. Каждый раз, когда я загружаю URL-адрес индексаклиент отправит мне сообщение.Теперь проблема в том, что я нажимаю кнопку URL-адреса индекса и перехожу на другую страницу, а обратно на URL-адрес индекса я не получаю сообщение.
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webview);
ButterKnife.bind(this);
initWebView();
Log.e("MrXieXie---Server", "onCreate");
new Thread(new Runnable() {
@Override
public void run() {
Server();
Log.e("MrXieXie---Server", "run");
}
}).start();
}
private void initWebView() {
WebSettings webSettings = webView.getSettings();
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
webSettings.setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(request.getUrl().toString());
return true;
}
});
webView.loadUrl("http://xxxxxxxx");
}
private void Server() {
mockWebServer.enqueue(new MockResponse().withWebSocketUpgrade(new WebSocketListener() {
@Override
public void onOpen(WebSocket webSocket, Response response) {
Log.e("MrXieXie---Server", "WebSocketServer ===== onOpen");
}
@Override
public void onMessage(WebSocket webSocket, String text) {
Log.e("MrXieXie---Server", "WebSocketServer ===== onMessage ===" + text);
if(!text.isEmpty() && text.equals("USER")){
webSocket.send("xxxx");
}
}
@Override
public void onMessage(WebSocket webSocket, ByteString bytes) {
Log.e("MrXieXie---Server", "WebSocketServer ===== onMessage ===" + bytes);
}
@Override
public void onClosing(WebSocket webSocket, int code, String reason) {
Log.e("MrXieXie---Server", "WebSocketServer ===== onClosing");
}
@Override
public void onClosed(WebSocket webSocket, int code, String reason) {
Log.e("MrXieXie---Server", "WebSocketServer ===== onClosed");
}
@Override
public void onFailure(WebSocket webSocket, Throwable t, @Nullable Response response) {
Log.e("MrXieXie---Server", "WebSocketServer ===== onFailure");
}
}));
try {
mockWebServer.start(InetAddress.getLocalHost(), 5223);
} catch (IOException e) {
e.printStackTrace();
}
}