package com.iailab.module.infra.api.websocket; import com.iailab.framework.common.pojo.CommonResult; import com.iailab.framework.common.util.json.JsonUtils; import com.iailab.module.infra.api.websocket.dto.WebSocketSendReqDTO; import com.iailab.module.infra.enums.ApiConstants; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import javax.validation.Valid; @FeignClient(name = ApiConstants.NAME) // TODO iailab:fallbackFactory = @Tag(name = "RPC æœåŠ¡ - WebSocket å‘é€å™¨çš„") // 对 WebSocketMessageSender 进行å°è£…,æ供给其它模å—使用 public interface WebSocketSenderApi { String PREFIX = ApiConstants.PREFIX + "/websocket"; @PostMapping(PREFIX + "/send") @Operation(summary = "å‘é€ WebSocket 消æ¯") CommonResult<Boolean> send(@Valid @RequestBody WebSocketSendReqDTO message); /** * å‘é€æ¶ˆæ¯ç»™æŒ‡å®šç”¨æˆ· * * @param userType 用户类型 * @param userId ç”¨æˆ·ç¼–å· * @param messageType 消æ¯ç±»åž‹ * @param messageContent 消æ¯å†…容,JSON æ ¼å¼ */ default void send(Integer userType, Long userId, String messageType, String messageContent) { send(new WebSocketSendReqDTO().setUserType(userType).setUserId(userId) .setMessageType(messageType).setMessageContent(messageContent)).checkError(); } /** * å‘é€æ¶ˆæ¯ç»™æŒ‡å®šç”¨æˆ·ç±»åž‹ * * @param userType 用户类型 * @param messageType 消æ¯ç±»åž‹ * @param messageContent 消æ¯å†…容,JSON æ ¼å¼ */ default void send(Integer userType, String messageType, String messageContent) { send(new WebSocketSendReqDTO().setUserType(userType) .setMessageType(messageType).setMessageContent(messageContent)).checkError(); } /** * å‘é€æ¶ˆæ¯ç»™æŒ‡å®š Session * * @param sessionId Session ç¼–å· * @param messageType 消æ¯ç±»åž‹ * @param messageContent 消æ¯å†…容,JSON æ ¼å¼ */ default void send(String sessionId, String messageType, String messageContent) { send(new WebSocketSendReqDTO().setSessionId(sessionId) .setMessageType(messageType).setMessageContent(messageContent)).checkError(); } default void sendObject(Integer userType, Long userId, String messageType, Object messageContent) { send(userType, userId, messageType, JsonUtils.toJsonString(messageContent)); } default void sendObject(Integer userType, String messageType, Object messageContent) { send(userType, messageType, JsonUtils.toJsonString(messageContent)); } default void sendObject(String sessionId, String messageType, Object messageContent) { send(sessionId, messageType, JsonUtils.toJsonString(messageContent)); } }