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;}

模拟会员登录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/520713.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于TableStore的亿级订单管理解决方案

一、方案背景 订单系统存在于各行各业&#xff0c;如电商订单、银行流水、运营商话费账单等&#xff0c;是一个非常广泛、通用的系统。对于这类系统&#xff0c;在过去十几年发展中已经形成了经典的做法。但是随着互联网的发展&#xff0c;以及各企业对数据的重视&#xff0c;…

mybatis-plus的 mapper.xml 路径配置的坑

mybatis-plus今天遇到一个问题&#xff0c;就是mybatis 没有读取到mapper.xml 文件。 #实体扫描&#xff0c;多个package用逗号或者分号分隔 mybatis-plus:typeAliasesPackage: com.gblfy.springboot.mybatisplus.entitymapper-locations:- classpath*:com/gblfy/springboot/*…

加速布局无服务器生态,腾讯云与Serverless.com达成全球战略合作!

在云计算技术领域&#xff0c;“Serverless&#xff08;无服务器&#xff09;”作为一种新型的软件设计架构正在快速崛起。作为继虚拟机、容器后的第三代通用计算平台&#xff0c;Serverless技术也一直是腾讯云原生的重点发力领域。 近日&#xff0c;在由腾讯云主办的首届Tech…

Android 上滑背景变淡,在Android中,如何平滑地将背景从一种颜色淡化到另一种颜色? (如何使用线程)...

我已经玩了几个星期的Android编程&#xff0c;我正在尝试一些看起来很简单的工作&#xff0c;但我想我缺少一些东西。我想做的是让背景从白色到黑色平滑地退色。我已经尝试了一些事情&#xff0c;没有一个似乎工作。我做的第一件事是使用for循环和LinearLayout的setBackgroundC…

阿里云周源:一篇文章读懂四代视频加密技术演进

在刚刚圆满落幕的LiveVideoStackCon峰会上&#xff0c;阿里云高级技术专家周源进行了《视频加密和DRM的实施实践》主题分享。周源&#xff0c;有十多年音视频研发经验&#xff0c;之前在淘宝视频负责开放平台&#xff0c;目前在阿里云视频云部门负责媒体处理&#xff0c;在大规…

python程序员怎么做_资料篇:如何自学成为Python程序员

这篇文章是早两年首发其他论坛的&#xff0c;也在知乎回答用过。一直有读者私信我&#xff0c;说这篇文章很有帮助&#xff0c;所以我决定再抽取前篇的资料内容在专栏里。食用指南&#xff1a;1. 没有师傅&#xff0c;没有钱&#xff0c;但是具有一定的计算机理论基础的&#x…

云原生数据库如何打造业务弹性

云计算带来了业务弹性上的极大优势&#xff0c;阿里云数据库高级产品专家时慢从应用架构的变迁&#xff0c;客户实战案例&#xff0c;业务分析等方面详细介绍POLARDB&#xff0c;及如何利用POLARDB设计互联网创新型应用的数据库架构。 应用架构的变迁——为什么我们需要超级MyS…

SpringMVC 集成 mybatisPlus

文章目录一、基础配置1. pom2. web.xml二、配置文件2.1.spring-context.xml2.2. spring-datasource.xml2.3. spring-mvc.xml2.4. jdbc.properties2.5. logback.xml三、基础类3.1. 实体类3.2. 接口类3.3. 接口映射xml3.4. service接口3.5. 接口实现类3.6. 控制层四、数据库方面4…

android重新编译res,使用 gradle 在编译时动态设置 Android resValue / BuildConfig / Manifes中lt;meta-datagt;变量的值...

你也能够查看我的其它同类文章。也会让你有一定的收货关于使用Gradle来控制版本号和生成不同版本号的代码。我总结了三篇文章&#xff0c;网上关于这些知识&#xff0c;都比較零散。我在学习这些的之前。根本不知道还有这种方法。所以说不知道并不可怕&#xff0c;可怕的是不知…

四大开源项目联合发布 腾讯已成Github全球贡献前十公司!

近日在Techo开发者大会上&#xff0c;腾讯正式对四大重点开源项目进行了联合发布&#xff0c;包括分布式消息中间件TubeMQ、基于最主流的 OpenJDK8开发的Tencent Kona JDK、分布式HTAP数据库 TBase&#xff0c;以及企业级容器平台TKEStack。 截至目前&#xff0c;腾讯已经在Gi…

5W1H系列 | Nacos 帮我们解决什么问题?(配置管理篇)

Nacos 是阿里巴巴今年7月份开源的项目&#xff0c;如其名&#xff0c; Naming Configuration Service &#xff0c;专注于服务发现和配置管理领域。本系列文章&#xff0c;将从 5W1H&#xff08;What、Where、When、Who、Why、How&#xff09;全面剖析 Nacos&#xff0c;给大家…

tensorflow玻尔兹曼机_资源 | 10种深度学习算法的TensorFlow实现

原标题&#xff1a;资源 | 10种深度学习算法的TensorFlow实现选自 Github作者&#xff1a;blackecho机器之心编译参与&#xff1a;吴攀这个 repository 是使用 TensorFlow 库实现的多种深度学习算法的实现。这个软件包的目标是作为一种命令行实用程序——你可以将其用来快速训练…

实践 | Sentinel 扩展性设计

Sentinel 提供多样的 SPI 接口用于提供扩展的能力。用户可以在用同一个 sentinel-core 的基础上自行扩展接口实现&#xff0c;从而可以方便地给 Sentinel 添加自定义的逻辑。 初始化逻辑扩展机制 为了统一初始化的流程&#xff0c;我们抽象出了 InitFunc 接口代表 Sentinel 的…

android 各版本市占率,Android各版本市占率:果冻豆遥遥领先

近日&#xff0c;谷歌公布了最新Android系统各版本的市场占有率。虽说已发布两年之久且推出三个版本的果冻豆系统出现了小幅下滑&#xff0c;但60.8%的市占率依然遥遥领先其它各版本。Android各版本市占率&#xff1a;果冻豆遥遥领先(图片来源于cnbeta)从 谷歌统计数据显示&…

腾讯首度披露基础架构演进史:“海量之道”进化“生而为云”

近日腾讯Techo开发者大会在北京召开。会上腾讯云副总裁、云架构平台部总经理谢明首次对外披露了腾讯基础设施演进与创新历程。他介绍在微信、QQ等国民级业务不断发展的背后&#xff0c;包括服务器、网络、IDC、计算、存储、数据库等在内的基础设施和技术架构一直在不断进化&…

阿里云专家穆轩的《杭州九年程序员之“修炼”手册》

对于一个从未到过南方的内蒙汉子来说&#xff0c;北京的大学一直是中学时憧憬的殿堂&#xff0c;而离家上千公里浙江大学&#xff0c;则是从来没有考虑过的地方。机缘巧合之下&#xff0c;被一位年近七旬的浙大老师说服&#xff0c;我自此开始了南下“修炼”之旅。没想到转眼间…

圆周移位是怎么移的_圆周移位.ppt

圆周移位* x(n) n 0 1 2 3 4 5 6 -1 -2 -3 -4 2 1 3 2 1 3 2 1 3 … … x(n) n 0 1 2 3 4 5 6 -1 -2 -3 -4 2 1 3 2 1 3 2 1 3 … … n x(-n) 0 1 2 3 4 5 6 -1 -2 -3 -4 … … 2 1 3 2 1 3 2 1 3 x(-n) n 0 1 2 3 4 5 6 -1 -2 -3 -4 … … 2 1 3 2 1 3 2 1 3 例&#xff1a;求…

SpringMVC 集成 mybatisPlus 分析

文章目录1. pom 依赖替换2. 扫描包3. pom 依赖替换4. dao层接口继承 extends BaseMapper5. 源码地址1. pom 依赖替换 mybatis依赖 <properties><org.mybatis.version>3.4.1</org.mybatis.version><org.mybatis.spring.version>1.3.0</org.mybatis.…

主流开源开发者工具落地阿里云,进一步提升开发者体验

在云计算大数据时代&#xff0c;企业的不断上云&#xff0c;业务的不断发展&#xff0c;技术架构的不断演进&#xff0c;导致资源、应用和数据的管理成本不断增加&#xff0c;运维难度不断加大。业务场景的不断和复杂和变化&#xff0c;不得不引起我们更多的思考&#xff1a; …