0
点赞
收藏
分享

微信扫一扫

Cat使用中的一些坑


1.国外服务器连接不上Cat服务器

我们当时全球各地都有服务器,在搭建好Cat服务器后,大陆及东南亚的服务器可以正常的连接Cat,不过像欧洲、北美这种服务器缺连接不上。查看Cat客户端的日志错误如下:

[10-21 23:59:54.771] [INFO] [ChannelManager] router config changed :****:2280;
[10-21 23:59:54.771] [INFO] [ChannelManager] start connect server/****:2280
[10-21 23:59:54.871] [ERROR] [ChannelManager] Error when try connecting to /****:2280
[10-21 23:59:54.871] [INFO] [ChannelManager] Error when init CAT server /****:2280;
[10-21 23:59:54.871] [INFO] [ChannelManager] start connect server/****:2280

去找Github上找相似的问题,都说什么我的配置项有问题,我又疯狂检查配置项,很烦;

后来在官方文档中发现,在Cat官方文档中指明了,Cat是只建议在内网中进行通讯。可他也不说为什么只建议在内网中通讯;

随后想到,是否是Cat客户端源码的问题,网络连接都会设置超时时间的,随后查看Cat的源码,通过字符串搜索,定位到 Error when try connecting 错误日志是从哪里打印出来的;

最后在ChannelManager类中发现了他链接Cat服务器的代码

private ChannelFuture createChannel(InetSocketAddress address) {
		m_logger.info("start connect server" + address.toString());
		ChannelFuture future = null;

		try {
			future = m_bootstrap.connect(address);
			future.awaitUninterruptibly(10, TimeUnit.MILLISECONDS); // 10 ms

			if (!future.isSuccess()) {
				m_logger.error("Error when try connecting to " + address);
				closeChannel(future);
			} else {
				m_logger.info("Connected to CAT server at " + address);
				return future;
			}
		} catch (Throwable e) {
			m_logger.error("Error when connect server " + address.getAddress(), e);

			if (future != null) {
				closeChannel(future);
			}
		}
		return null;
	}

我真是套他猴子,这里链接时间居然是10ms,难怪海外的连接不上;
随后反编译客户端jar包,修改时长为100,重新打包,上线,解决!


举报

相关推荐

0 条评论