我想实现一个浏览器只能打开一个聊天窗口 如果浏览器打开多个页面 isOnline 还可以用么?? 请教群主如果可以 能讲解下具体原理么
Gateway::isOnline($client_id) 是针对每个链接的,每打开一个页面你的websocket应该就会与workerman建立一个链接,每个链接被分配了一个client_id(2.1.2版本中这个id叫uid,值是开发者自己定义的)。这个client_id保存在Gateway进程中,并且对应一个socket链接。
如果要判定某个client_id是否在线,只需要到对应那个gateway进程中查找client_id对应的socket是否存在即可。Gateway::isOnline($client_id)就是BusinessWorker进程与通过socket与Gateway进程通讯,查询client_id对应的socket是否存在来判断是否在线的
好的 谢谢 明白 我每次都拿着$client_id 校验就行
Gateway::isOnline($client_id)
是针对每个链接的,每打开一个页面你的websocket应该就会与workerman建立一个链接,每个链接被分配了一个client_id(2.1.2版本中这个id叫uid,值是开发者自己定义的)。这个client_id保存在Gateway进程中,并且对应一个socket链接。
如果要判定某个client_id是否在线,只需要到对应那个gateway进程中查找client_id对应的socket是否存在即可。Gateway::isOnline($client_id)就是BusinessWorker进程与通过socket与Gateway进程通讯,查询client_id对应的socket是否存在来判断是否在线的
好的 谢谢 明白 我每次都拿着$client_id 校验就行