Я разработал сервер веб-сокетов с использованием nodejs (библиотека ws)
Я хочу добавить модуль чата в приложение для Android.Я использую okhttp для клиента websocket.При подключении с устройства это работает.Но при подключении второго устройства оно не работает.Отвечает только первый отправитель события websocket.on ("message").Другие устройства не прослушивают сообщение.Только устройство слушает A. B-> B
Как настроить, чтобы onMessage работал на всех устройствах.
Java-клиент:
class SConnection {
SConnection(String url) {
mClient = new OkHttpClient.Builder()
.readTimeout(3, TimeUnit.SECONDS)
.retryOnConnectionFailure(true)
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(10, TimeUnit.SECONDS)
.build();
mServerUrl = url;
}
public enum ConnectionStatus {
DISCONNECTED,
CONNECTED
}
public interface ServerListener {
void onNewMessage(String message);
void onStatusChange(ConnectionStatus status);
}
private WebSocket mWebSocket;
private OkHttpClient mClient;
private String mServerUrl;
private Handler mMessageHandler;
private Handler mStatusHandler;
private ServerListener mListener;
public class SocketListener extends WebSocketListener {
@Override
public void onOpen(WebSocket webSocket, Response response) {
Message m = mStatusHandler.obtainMessage(0, ConnectionStatus.CONNECTED);
mStatusHandler.sendMessage(m);
}
@Override
public void onMessage(WebSocket webSocket, String text) {
Message m = mMessageHandler.obtainMessage(0, text);
mMessageHandler.sendMessage(m);
}
@Override
public void onClosed(WebSocket webSocket, int code, String reason) {
Message m = mStatusHandler.obtainMessage(0, ConnectionStatus.DISCONNECTED);
mStatusHandler.sendMessage(m);
}
@Override
public void onFailure(WebSocket webSocket, Throwable t, Response response) {
disconnect();
}
}
void connect(ServerListener listener) {
Request request = new Request.Builder()
.url(mServerUrl)
.build();
mWebSocket = mClient.newWebSocket(request, new SocketListener());
mListener = listener;
mMessageHandler = new Handler(msg -> {mListener.onNewMessage((String) msg.obj); return true;});
mStatusHandler = new Handler(msg -> { mListener.onStatusChange((ConnectionStatus) msg.obj); return true;});
}
void disconnect() {
mWebSocket.cancel();
mListener = null;
mMessageHandler.removeCallbacksAndMessages(null);
mStatusHandler.removeCallbacksAndMessages(null);
}
void sendMessage(String message) {
mWebSocket.send(message);
}
сервер веб-сокетов в nodejs:
module.exports = (httpsServer) => {
const WebSocketServer = require('ws').Server;
const wss = new WebSocketServer({
server: httpsServer
});
wss.on('connection', function connection(ws) {
console.log('connected');
ws.on('message', function incoming(message) {
...
ws.send(JSON.stringify(response));
});
});
wss.on('close', function close() {
console.log('disconnected');
});
};
Может быть, добавление этой проблемы решить, но как?
{'force new connection':true}