websocket 获取连接id_Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证...
Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证
2年前
阅读 3678
评论 0
喜欢 0
### 0、前言
前面基本的WebSocket操作,我们基本都已经掌握了,接下来我们要学习的是怎么用`user_id`去关联一个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 作为身份凭证...相关推荐
- java连接zookeeper_java 学习笔记(四) java连接ZooKeeper
public class Demo2 { public static void main(String[] args) { String connectString = "192.168.1 ...
- 【K210】K210学习笔记七——使用K210拍摄照片并在MaixHub上进行训练
[K210]K210学习笔记七--使用K210拍摄照片并在MaixHub上进行训练 前言 K210准备工作 K210如何拍摄照片 准备工作 拍摄相关代码定义 用K210拍摄到的照片在MaixHub平台 ...
- window的dos命令学习笔记 七
文章目录 一.dos历史学习笔记(后期整合到这里,我想能学到这里的应该不多了,嘿嘿,加油) 二.执行状态返回值(`%errorlevel%`,和shell中`$?`相似): 三.视窗 1.color ...
- ESP32学习笔记(七) 复位和时钟
ESP32学习笔记(七) 复位和时钟 目录: ESP32学习笔记(一) 芯片型号介绍 ESP32学习笔记(二) 开发环境搭建 VSCode+platformio ESP32学习笔记(三) 硬件资源介绍 ...
- 学习笔记:搭建sftp服务
学习笔记:搭建sftp服务 前言 环境 操作系统 主要软件 步骤 下载软件 安装软件 配置软件 重启服务 测试 总结 问题 前言 本文事无巨细的记录了搭建和测试的完整过程,叙述较为冗余,为了提高阅读效 ...
- OpenCV学习笔记(七)——图像梯度及边缘检测
图像梯度计算的是图像变化的速度.对于图像的边缘部分,其灰度值变化较大,梯度值也较大:相反,对于图像中比较平滑的部分,其灰度值变化较小,相应的梯度值也较小.一般情况下,图像梯度计算的是图像的边缘信息. ...
- Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件
Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件 用Polyworks脚本开发,没有高级语言的支持,功能难免单一,一些比较复杂的交互实现不了,界面和报告也很 ...
- Android学习笔记第五篇--网络连接与云服务(一)
Android学习笔记第五篇–网络连接与云服务 第一章.无线连接设备 除了能够在云端通讯,Android的无线API也允许在同一局域网内的设备通讯,**甚至没有连接网络,而是物理具体相近,也可以相 ...
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
最新文章
- 瑞雪时晴,不亦快哉 ——图灵十一月月刊
- mysql 用户命令_MySQL命令行新建用户
- Java培训教程之对象的创建与使用
- mysql参数配置调优详解配置(1)
- [转载] flutter开发桌面程序_在开始使用Flutter开发应用程序之前要了解的5条提示
- Q120:PBRT-V3,“直接光照”积分器(14.3章节)(翻译不下去了)
- SNMP-简单网络管理协议
- ureport2学习笔记
- 联想电脑自动锁屏解决方法
- 应用程序正常初始化(0xc0150002)失败。请单击“确定”,终止应用程序
- 魂斗罗归来大觉机器人_魂斗罗归来挑战Boss血量分析 魂斗罗归来Boss模式挑战攻略...
- ALM / QC 64-bit Patch 12 S-Chinese
- mysql 2002_解决MySQL报错ERROR 2002 (HY000)
- 智能合约审计之DDOS概述
- 应用图标变小及换图标不生效的问题
- 基于钱搜索算法的BCH译码
- Latex学习笔记 (Ex4)希腊字母、罗马字母一览表
- Windows下设置桌面壁纸的代码(QT版)
- C++ Combo Box控件用法
- R语言数据分析笔记——t检验(含正态性检验和方差齐性检验在SPSS和R语言中的操作t检验(单样本、双独立样本、配对样本)在Excel、SPSS、R语言中的操作)