websocket 获取连接id_Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证...
Swoole學(xué)習(xí)筆記七:搭建WebSocket長(zhǎng)連接 之 使用 USER_ID 作為身份憑證
2年前
閱讀 3678
評(píng)論 0
喜歡 0
### 0、前言
前面基本的WebSocket操作,我們基本都已經(jīng)掌握了,接下來(lái)我們要學(xué)習(xí)的是怎么用`user_id`去關(guān)聯(lián)一個(gè)fd憑證呢?
按我們的思路應(yīng)該是在`data`存儲(chǔ)器中,將`fd`替換成`user_id`,但這樣在server的`close`事件中,就需要用遍歷的方式去讀取關(guān)閉的對(duì)應(yīng)連接了。
這樣費(fèi)時(shí)的操作,肯定不是我們想要的。
實(shí)際上,我們只需要新增一個(gè)`open`連接存儲(chǔ)器記錄`fd`即可,然后在`code=1`的時(shí)候用`user_id`更新到原來(lái)的`data`存儲(chǔ)器中即可。
### 1、注意事項(xiàng)
① 客戶端全部使用`user_id`作為身份憑證
② 服務(wù)端新建一個(gè)open存儲(chǔ)器
③ 服務(wù)端在`code=1`時(shí),在從open存儲(chǔ)器中讀取`fd`憑證寫(xiě)入data存儲(chǔ)器中。
④ 服務(wù)端在`close`事件中記得清除已經(jīng)關(guān)閉的open存儲(chǔ)器憑證,防止存儲(chǔ)器無(wú)限增大。
### 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;}
- 登錄
- 退出
總結(jié)
以上是生活随笔為你收集整理的websocket 获取连接id_Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python find方法的复杂度_py
- 下一篇: java8 lambda maplist