微服务:可以帮我们干一个具体的逻辑上比较独立的事情。
类似于mysql
,mysql可以自动将数据存到文件里
通过bot
代码来控制蛇的移动和匹配系统都涉及微服务。
匹配系统干的具体的逻辑是方便的进行两个进程的通信。
WebSocketServer
每来一个新的链接,都会开一个新的线程来维护。所以涉及到多线程。
客户端向服务端发送的链接是一个WebSocketServer
实例,所有和链接相关的信息都存在WebSocketServer
类中。维护所有用户的公共信息存成静态变量,维护某个用户私有的信息,存成私有变量。
需要开一个全局变量存储所有链接:当从匹配系统接受到某一局匹配成功信息后,需要将消息发送给匹配成功的两名玩家,需要根据用户的id找到他所对应的链接是谁,利用该链接向前端发请求。
静态变量对所有的实例都可见,相当于所有实例的全局变量,不加static
,则每一个实例都有自己独一份。static
相当于全局变量,不加static相当于局部变量
final private static ConcurrentHashMap<Integer, WebSocketServer> users = new ConcurrentHashMap<>();
这个哈希表对需要对每一个实例都可见,在每一个实例都要访问同一个哈希表,所以要加static
函数名加上static
,在其他类中调用该函数的方法时不需要实例化,用类名.方法就可以。