websocket 获取连接id_Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证...
Swoole學習筆記七:搭建WebSocket長連接 之 使用 USER_ID 作為身份憑證
2年前
閱讀 3678
評論 0
喜歡 0
### 0、前言
前面基本的WebSocket操作,我們基本都已經掌握了,接下來我們要學習的是怎么用`user_id`去關聯(lián)一個fd憑證呢?
按我們的思路應該是在`data`存儲器中,將`fd`替換成`user_id`,但這樣在server的`close`事件中,就需要用遍歷的方式去讀取關閉的對應連接了。
這樣費時的操作,肯定不是我們想要的。
實際上,我們只需要新增一個`open`連接存儲器記錄`fd`即可,然后在`code=1`的時候用`user_id`更新到原來的`data`存儲器中即可。
### 1、注意事項
① 客戶端全部使用`user_id`作為身份憑證
② 服務端新建一個open存儲器
③ 服務端在`code=1`時,在從open存儲器中讀取`fd`憑證寫入data存儲器中。
④ 服務端在`close`事件中記得清除已經關閉的open存儲器憑證,防止存儲器無限增大。
### 2、客戶端代碼修改:
```
// +----------------------------------------------------------------------
// 小黃牛blog - websocket
// +----------------------------------------------------------------------
// Copyright (c) 2018 https://xiuxian.junphp.com All rights reserved.
// +----------------------------------------------------------------------
// Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// Author: 小黃牛 <1731223728@qq.com>
// +----------------------------------------------------------------------
session_start();
# 模擬用戶登錄
if (!empty($_POST['nice'])) {
$data = [
'nice' => $_POST['nice'],
'id' => uniqid(),
];
$_SESSION['user'] = $data;
echo json_encode($data, JSON_UNESCAPED_UNICODE);
exit;
# 模擬用于退出登錄
} else if (!empty($_POST['out'])) {
$_SESSION['user'] = '';
}
?>
Swoole+Websocket案例 - 小黃牛html,body{margin:0;padding:0;font-size:13px}
.left{width: 20%;height: 600px;border: 1px solid #ddd;float: left;}
.right{width: 59.7%;height: 400px;border: 1px solid #ddd;border-left: 0px;float: left;overflow: auto;}
.bottom{width: 79.7%;height: 199px;border: 1px solid #ddd;border-left: 0px;border-top: 0px;float: left;}
#content{width: 99.5%;height: 165px;}
.blue{color:blue}
.red{color:red}
.div_left{width:100%;float:left}
.div_right{width:100%;float:left;text-align: right;}
.div_centent{width:100%;float:left;text-align: center;}
#USER{width:100%;height: 40px;line-height: 40px;border-bottom: 1px solid #ddd;float:left}
#error{width:20%;height:400px;float: left;overflow: auto;}
- 登錄
- 退出
總結
以上是生活随笔為你收集整理的websocket 获取连接id_Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python find方法的复杂度_py
- 下一篇: java8 lambda maplist