This commit is contained in:
@@ -68,20 +68,44 @@ public abstract class WebSocket {
|
||||
}
|
||||
|
||||
public final int sendMessage(Serializable groupid, String text, boolean last) {
|
||||
if (nodeService == null) return WebSocketNodeService.RETCODE_NODESERVICE_NULL;
|
||||
if (groupid == this.groupid) {
|
||||
return nodeService.onSend(this.engine.getEngineid(), groupid, text, last);
|
||||
} else {
|
||||
return nodeService.send(this.engine.getEngineid(), groupid, text, last);
|
||||
}
|
||||
return sendMessage(groupid, false, text, last);
|
||||
}
|
||||
|
||||
public final int sendMessage(Serializable groupid, byte[] data, boolean last) {
|
||||
return sendMessage(groupid, false, data, last);
|
||||
}
|
||||
|
||||
public final int sendRecentMessage(Serializable groupid, String text) {
|
||||
return sendRecentMessage(groupid, text, true);
|
||||
}
|
||||
|
||||
public final int sendRecentMessage(Serializable groupid, byte[] data) {
|
||||
return sendRecentMessage(groupid, data, true);
|
||||
}
|
||||
|
||||
public final int sendRecentMessage(Serializable groupid, String text, boolean last) {
|
||||
return sendMessage(groupid, true, text, last);
|
||||
}
|
||||
|
||||
public final int sendRecentMessage(Serializable groupid, byte[] data, boolean last) {
|
||||
return sendMessage(groupid, true, data, last);
|
||||
}
|
||||
|
||||
private int sendMessage(Serializable groupid, boolean recent, String text, boolean last) {
|
||||
if (nodeService == null) return WebSocketNodeService.RETCODE_NODESERVICE_NULL;
|
||||
if (groupid == this.groupid) {
|
||||
return nodeService.onSend(this.engine.getEngineid(), groupid, data, last);
|
||||
return nodeService.onSend(this.engine.getEngineid(), groupid, recent, text, last);
|
||||
} else {
|
||||
return nodeService.send(this.engine.getEngineid(), groupid, data, last);
|
||||
return nodeService.send(this.engine.getEngineid(), groupid, recent, text, last);
|
||||
}
|
||||
}
|
||||
|
||||
private int sendMessage(Serializable groupid, boolean recent, byte[] data, boolean last) {
|
||||
if (nodeService == null) return WebSocketNodeService.RETCODE_NODESERVICE_NULL;
|
||||
if (groupid == this.groupid) {
|
||||
return nodeService.onSend(this.engine.getEngineid(), groupid, recent, data, last);
|
||||
} else {
|
||||
return nodeService.send(this.engine.getEngineid(), groupid, recent, data, last);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,7 +138,7 @@ public abstract class WebSocket {
|
||||
protected final WebSocketGroup getWebSocketGroup(long groupid) {
|
||||
return engine.getWebSocketGroup(groupid);
|
||||
}
|
||||
|
||||
|
||||
protected final Collection<WebSocketGroup> getWebSocketGroups() {
|
||||
return engine.getWebSocketGroups();
|
||||
}
|
||||
|
||||
@@ -146,11 +146,20 @@ public class WebSocketNodeService implements Service {
|
||||
|
||||
@RemoteOn
|
||||
public int send(String engineid, Serializable groupid, String text, boolean last) {
|
||||
return send0(engineid, groupid, text, last);
|
||||
return send0(engineid, groupid, false, text, last);
|
||||
}
|
||||
|
||||
public final int onSend(String engineid, Serializable groupid, String text, boolean last) {
|
||||
return onSend0(engineid, groupid, text, last);
|
||||
return onSend0(engineid, groupid, false, text, last);
|
||||
}
|
||||
|
||||
@RemoteOn
|
||||
public int send(String engineid, Serializable groupid, boolean recent, String text, boolean last) {
|
||||
return send0(engineid, groupid, recent, text, last);
|
||||
}
|
||||
|
||||
public final int onSend(String engineid, Serializable groupid, boolean recent, String text, boolean last) {
|
||||
return onSend0(engineid, groupid, recent, text, last);
|
||||
}
|
||||
|
||||
@RemoteOn
|
||||
@@ -164,18 +173,27 @@ public class WebSocketNodeService implements Service {
|
||||
|
||||
@RemoteOn
|
||||
public int send(String engineid, Serializable groupid, byte[] data, boolean last) {
|
||||
return send0(engineid, groupid, data, last);
|
||||
return send0(engineid, groupid, false, data, last);
|
||||
}
|
||||
|
||||
public final int onSend(String engineid, Serializable groupid, byte[] data, boolean last) {
|
||||
return onSend0(engineid, groupid, data, last);
|
||||
return onSend0(engineid, groupid, false, data, last);
|
||||
}
|
||||
|
||||
private int send0(String engineid, Serializable groupid, Serializable text, boolean last) {
|
||||
@RemoteOn
|
||||
public int send(String engineid, Serializable groupid, boolean recent, byte[] data, boolean last) {
|
||||
return send0(engineid, groupid, recent, data, last);
|
||||
}
|
||||
|
||||
public final int onSend(String engineid, Serializable groupid, boolean recent, byte[] data, boolean last) {
|
||||
return onSend0(engineid, groupid, recent, data, last);
|
||||
}
|
||||
|
||||
private int send0(String engineid, Serializable groupid, boolean recent, Serializable text, boolean last) {
|
||||
final Set<String> nodes = usernodes.get(groupid);
|
||||
if (nodes == null) return RETCODE_WSOFFLINE; //未登录
|
||||
int rs = 0;
|
||||
if (nodes.contains(this.localNodeName)) rs = onSend0(engineid, groupid, text, last);
|
||||
if (nodes.contains(this.localNodeName)) rs = onSend0(engineid, groupid, recent, text, last);
|
||||
if (nodemaps == null) return rs;
|
||||
this.nodemaps.forEach((x, y) -> {
|
||||
if (nodes.contains(x)) {
|
||||
@@ -201,10 +219,11 @@ public class WebSocketNodeService implements Service {
|
||||
*
|
||||
* @param engineid
|
||||
* @param groupid 接收方
|
||||
* @param recent 是否只发送最近的WebSocket端
|
||||
* @param text
|
||||
* @return
|
||||
*/
|
||||
private int onSend0(String engineid, Serializable groupid, Serializable text, boolean last) {
|
||||
private int onSend0(String engineid, Serializable groupid, boolean recent, Serializable text, boolean last) {
|
||||
WebSocketEngine webSocketEngine = engines.get(engineid);
|
||||
if (webSocketEngine == null) {
|
||||
if (finest) logger.finest("Node(" + localNodeName + ") receive websocket message {engineid:'" + engineid + "', groupid:" + groupid + ", content:'" + text + "'} but result is " + RETCODE_ENGINE_NULL);
|
||||
@@ -217,9 +236,17 @@ public class WebSocketNodeService implements Service {
|
||||
}
|
||||
if (finest) logger.finest("Node (" + localNodeName + ") receive websocket message {engineid:'" + engineid + "', groupid:" + groupid + ", content:'" + text + "'}.");
|
||||
if (text != null && text.getClass() == byte[].class) {
|
||||
group.getWebSockets().forEach(x -> x.send((byte[]) text, last));
|
||||
if (recent) {
|
||||
group.getRecentWebSocket().send((byte[]) text, last);
|
||||
} else {
|
||||
group.getWebSockets().forEach(x -> x.send((byte[]) text, last));
|
||||
}
|
||||
} else {
|
||||
group.getWebSockets().forEach(x -> x.send(text.toString(), last));
|
||||
if (recent) {
|
||||
group.getRecentWebSocket().send(text.toString(), last);
|
||||
} else {
|
||||
group.getWebSockets().forEach(x -> x.send(text.toString(), last));
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user