package com.qianwen.core.websocket.custom;
|
|
import com.qianwen.core.secure.BladeUser;
|
import com.qianwen.core.tool.utils.Func;
|
import com.qianwen.core.tool.utils.SpringUtil;
|
import com.qianwen.core.websocket.config.ServerConfig;
|
import com.qianwen.core.websocket.holder.SessionKeyGenerator;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.cloud.client.ServiceInstance;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.web.socket.WebSocketSession;
|
|
@Configuration
|
public class MasterlinkSessionKeyGenerator implements SessionKeyGenerator {
|
@Autowired(required = false)
|
private ServiceInstance instance;
|
@Autowired
|
private ServerConfig serverConfig;
|
|
@Override
|
public Object sessionKey(WebSocketSession webSocketSession) {
|
String host;
|
int port;
|
Object obj = webSocketSession.getAttributes().get("USER_KEY_ATTR_NAME");
|
if (Func.isEmpty(this.instance)) {
|
port = ((ServerConfig) SpringUtil.getBean(ServerConfig.class)).getServerPort();
|
host = ((ServerConfig) SpringUtil.getBean(ServerConfig.class)).getHost();
|
} else {
|
host = this.instance.getHost();
|
port = this.instance.getPort();
|
}
|
if (obj instanceof BladeUser) {
|
BladeUser user = (BladeUser) obj;
|
return String.format("%s:%s:%s", host, Integer.valueOf(port), user.getUserId());
|
}
|
return null;
|
}
|
}
|