Browse Source

完善逻辑,先加群,才能群聊

pull/1/head
Yangkai.Shen 6 years ago
parent
commit
dc6dd6c7e6
2 changed files with 24 additions and 5 deletions
  1. +17
    -2
      spring-boot-demo-websocket-socketio/src/main/java/com/xkcoding/websocket/socketio/handler/MessageEventHandler.java
  2. +7
    -3
      spring-boot-demo-websocket-socketio/src/main/resources/static/index.html

+ 17
- 2
spring-boot-demo-websocket-socketio/src/main/java/com/xkcoding/websocket/socketio/handler/MessageEventHandler.java View File

@@ -1,5 +1,6 @@
package com.xkcoding.websocket.socketio.handler;

import cn.hutool.core.util.ObjectUtil;
import com.corundumstudio.socketio.AckRequest;
import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.SocketIOServer;
@@ -16,6 +17,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Collection;
import java.util.Optional;
import java.util.UUID;

@@ -112,8 +114,21 @@ public class MessageEventHandler {

@OnEvent(value = Event.GROUP)
public void onGroupEvent(SocketIOClient client, AckRequest request, GroupMessageRequest data) {
log.info("群号 {} 收到来自 {} 的群聊消息:{}", data.getGroupId(), data.getFromUid(), data.getMessage());
sendToGroup(data);
Collection<SocketIOClient> clients = server.getRoomOperations(data.getGroupId()).getClients();

boolean inGroup = false;
for (SocketIOClient socketIOClient : clients) {
if (ObjectUtil.equal(socketIOClient.getSessionId(), client.getSessionId())) {
inGroup = true;
break;
}
}
if (inGroup) {
log.info("群号 {} 收到来自 {} 的群聊消息:{}", data.getGroupId(), data.getFromUid(), data.getMessage());
sendToGroup(data);
} else {
request.sendAckData("请先加群!");
}
}

/**


+ 7
- 3
spring-boot-demo-websocket-socketio/src/main/resources/static/index.html View File

@@ -112,7 +112,7 @@
socket.emit('join', joinRequest);
}

function sendMessage() {
function sendGroup() {
let message = $('#msg').val();

if (message === '') {
@@ -126,7 +126,11 @@
groupId: "666",
message: message
};
socket.emit('group', groupRequest);
socket.emit('group', groupRequest, function (data) {
if (data) {
layer.msg(data, {icon: 5});
}
});
}

function sendChat() {
@@ -171,7 +175,7 @@
<input id="msg" class="input-xlarge" type="text" placeholder="随便输点啥"/>
<input id="to" class="input-xlarge" type="text" placeholder="私聊发给谁"/>
<button type="button" onClick="sendJoin()" class="btn" id="join">加入群聊</button>
<button type="button" onClick="sendMessage()" class="btn" id="send">群聊</button>
<button type="button" onClick="sendGroup()" class="btn" id="send">群聊</button>
<button type="button" onClick="sendChat()" class="btn" id="chat">私聊</button>
<button type="button" onClick="sendBroadcast()" class="btn">广播消息</button>
<button type="button" onClick="sendConnect()" class="btn">连接</button>


Loading…
Cancel
Save