我想听一个用户离开房间的事件。根据我的研究,<dependency>
<groupId>sample</groupId>
<artifactId>com.sample</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/sample.jar</systemPath>
</dependency>
显然包含套接字所在的房间。但是,当我从套接字中侦听socket.rooms
事件时,显然套接字在断开连接之前离开了房间。因此,disconnect
将在断开连接事件后产生一个空对象。我需要专门听取用户离开房间的事件,而不是套接字断开事件,因为我有一系列房间对象,并希望在他们离开时从房间中删除用户。
答案 0 :(得分:2)
如果用户没有将其从房间中移除或用户断开连接,用户将无法离开房间。客户不能自己离开房间。因此,要知道用户何时离开房间,您只需要挂钩自己的代码,将其从房间中删除,并监听disconnect
事件。
除了断开连接之外,用户可以离开房间的另一种方式是,如果您自己的代码将它们从房间中删除,那么您可以挂钩到该特定功能并在您自己的代码时触发您自己的数据结构的更新将它们从聊天室中删除。
对于disconnect
事件,如果您要维护自己的房间数据结构,那么您可以在获得disconnect
事件时从任何房间中移除给定套接字(例如搜索每个房间并将其从您找到该插座的任何房间中移除。