socketio 설정에 This을 사용하고 있습니다. 2 개의 다른 socketio 서버 (서버 1과 서버 2)가 클러스터로 실행 중일 때 RedissonStoreFactory
netty-socketio 서버 클러스터 만들기
내 문제는 클라이언트가 server1과 연결하면 server2는 연결된 클라이언트 인 경우 정보가 없음을 의미합니다. 예. 2 클라이언트가 server1에 연결하는 경우 server2에서 server.getAllClients()
을 실행하면 2 카운트의 목록 대신 빈 목록이 반환됩니다.
여기 내 코드는 2 개의 다른 컴퓨터에서 실행됩니다.
@SpringBootApplication
public class Application {
private static final Logger LOGGER = Logger.getLogger(Application.class);
@Value("${test.socketio.hostName}")
private String socketIOHostName;
@Value("${test.socketio.port}")
private Integer socketIOport;
@Value("${test.dedisson.redissonAddress}")
private String redissonAddress;
@Autowired
private RedissonClient redissonClient;
@Bean
public SocketIOServer socketIOServer() {
LOGGER.info("Socket server starting on host=" + socketIOHostName + ", port=" + socketIOport);
Configuration config = new Configuration();
config.setHostname(socketIOHostName);
config.setPort(socketIOport);
StoreFactory redissonStoreFactory = new RedissonStoreFactory(redissonClient);
config.setStoreFactory(redissonStoreFactory);
SocketIOServer server = new SocketIOServer(config);
server.start();
LOGGER.info("Socket server started");
return server;
}
/**
*
* @return
*/
@Bean
public RedissonClient getRedissonClient(){
LOGGER.info("creatting redisson client on redissonAddress="+redissonAddress);
Config config = new Config();
config.useSingleServer().setAddress(redissonAddress);
RedissonClient redisson = Redisson.create(config);
LOGGER.info("redisson client connected");
return redisson;
}
public Application() {
//Nothing to be done here
}
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);
}
@Bean
public SpringAnnotationScanner springAnnotationScanner(SocketIOServer ssrv) {
return new SpringAnnotationScanner(ssrv);
}
}
나는 장애 조치 condition.If 서버 1 2 개 인스턴스를 선호는 서버 2가 연결된 클라이언트에 통지를 보내드립니다 아래이지만, 내 경우에는, 서버 2는 서버 1로 연결된 클라이언트의 아무 생각이 없습니다.