现在我是用Gateway/workerman的text协议的,我该怎样影射生成的client_id到我需要uid呢?前面我看过说建立一个表是client_id与uid的关系,但是我怎样得到当前我连接对象的uid呢?
客户端连接后需要发送自己的用户uid标识,例如uid+密码,或者一个网页的session_id等等,workerman根据标识检查用户是否合法,如果合法得到uid,将uid放置session中,例如$_SESSION=xxx; 这样以后这个客户端再发来数据,就可以根据$_SESSION判断当前用户是否合法,也就可以得到当前用户的uid了。
如果需要uid到client_id的映射,可以将对应关系存储在数据库或者memcache、redis存储中。验证用户合法设置 $_SESSION=xxx; 时将 client_id uid 的映射关系存入数据库,当onClose时通过client_id删除对应关系。uid与client_id可以一对多(一个用户可以登录多个客户端pc、网页、app等),也可以强制一对一,每个用户只能用一个客户端登录。
GatewayWorker 增加了bindUid 和 sendToUid方法,可以直接使用,参见手册 http://workerman.net/gatewaydoc/gateway-worker-development/bind-uid.html http://workerman.net/gatewaydoc/gateway-worker-development/send-to-uid.html
客户端连接后需要发送自己的用户uid标识,例如uid+密码,或者一个网页的session_id等等,workerman根据标识检查用户是否合法,如果合法得到uid,将uid放置session中,例如$_SESSION=xxx; 这样以后这个客户端再发来数据,就可以根据$_SESSION判断当前用户是否合法,也就可以得到当前用户的uid了。
如果需要uid到client_id的映射,可以将对应关系存储在数据库或者memcache、redis存储中。验证用户合法设置 $_SESSION=xxx; 时将 client_id uid 的映射关系存入数据库,当onClose时通过client_id删除对应关系。uid与client_id可以一对多(一个用户可以登录多个客户端pc、网页、app等),也可以强制一对一,每个用户只能用一个客户端登录。
GatewayWorker 增加了bindUid 和 sendToUid方法,可以直接使用,参见手册
http://workerman.net/gatewaydoc/gateway-worker-development/bind-uid.html
http://workerman.net/gatewaydoc/gateway-worker-development/send-to-uid.html