PHP框架+gatewayworker实现在线1对1聊天--发送消息(6)

文章目录

    • 发送消息原理说明
    • 发送功能实现
      • html部分
      • javascript代码
      • PHP代码

发送消息原理说明

接下来我们发送聊天的文本信息。点击发送按钮的时候,会自动将文本框里的内容发送出去。过程是我们将信息发送到服务器,服务器再转发给对方。文本框的id为msgcontent。
在这里插入图片描述

发送功能实现

html部分

给发送按钮添加一个函数,用来实现发送功能。

<button type="button" class="btn btn-primary" onclick="send_msg()">发送</button>

javascript代码

//下面这些变量都是从控制器的index方法传过来的,聊天过程中会经常用。var from_id='{$from_id}';var to_id='{$to_id}';var from_user_name='{$from_user_name}';from_user_name='我';var from_avatar='{$from_avatar}';var to_user_name='{$to_user_name}';var to_avatar='{$to_avatar}';
//发送信息function send_msg(){var content=$('#msgcontent').val();if(content==''){return false;}/**to_id 对方的id*content 发送的内容,从文本框获取*type 发送的消息的类型,1表示文本,2表示图片,3表情*/$.post('/chat.php/Chat/send', {"to_id":to_id,"content":content,"type":1}, function(data){}, 'json');var html=render_from(content,1);$('#chat_content').append(html);$('#msgcontent').val('');}//将自己发送的内容渲染到聊天区域,根据类型不同,渲染不同的效果。function render_from(content,content_type){var html='<div class="media_right">' +'            <div class="media-body">' +'                <h4 class="media-heading">'+from_user_name+'</h4>' ;if(content_type==1){html+='                <p class="chat_msg_right">'+content+'</p>' ;}if(content_type==2 ){html+='                <p class="chat_msg_right"><img src="'+content+'"/></p>' ;}if(content_type==3 ){html+='                <p class="chat_msg_right"><img src="'+content+'" class="emoj_w"/></p>' ;}html+='            </div>' +'            <div class="media-right">' +'                <img class="media-object avatar" src="'+from_avatar+'" alt="...">' +'            </div>' +'        </div>'return html;}

PHP代码

在ChatController.php里添加下面方法

 public function send(){//注册Gateway,必须有Gateway::$registerAddress = '127.0.0.1:1238';$type=I('type/d',0);$to_id=I('to_id/d',0);$from_id=$_SESSION['user_id'];$message=I('content/s','');$db_data=$data=['type'=>'text','content'=>$message,'from_id'=>$from_id,'to_id'=>$to_id,'content_type'=>$type];//将聊天内容写入数据库$from_user_name=$this->table('user')->where("id={$from_id}")->value('user_name');$to_user_name=$this->table('user')->where("id={$to_id}")->value('user_name');$t=time();$db_data['from_user_name']=$from_user_name;$db_data['to_user_name']=$to_user_name;$db_data['add_time']=$t;$db_data['add_time_f']=format_time($t); //格式化时间unset($db_data['type']);$chat_id=$this->table('chat')->add($db_data);//判断接收方是否在线,在线发送,不在线不用发送给对方if(Gateway::isUidOnline($to_id)){$data['chat_id']=$chat_id;$data['from_user_name']=$from_user_name;$data['to_user_name']=$to_user_name;$data['from_id']=$from_id;$data['to_id']=$to_id;$message=json_encode($data);// 向uid的网站页面发送数据Gateway::sendToUid($to_id, $message);}//返回给前端的json数据,需要哪些返回哪些,我全返回了。return json(['status'=>200,'is_online'=>$is_online,'chat_id'=>$chat_id,'content'=>$data['content'],'content_type'=>$data['content_type'],'from_user_name'=>$from_user_name,'to_user_name'=>$to_user_name,'from_id'=>$from_id,'to_id'=>$to_id]);}

发送消息到这儿就实现了。

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

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

相关文章

网络安全 | 信息安全管理体系(ISMS)认证与实施

网络安全 | 信息安全管理体系&#xff08;ISMS&#xff09;认证与实施 一、前言二、信息安全管理体系&#xff08;ISMS&#xff09;概述2.1 ISMS 的定义与内涵2.2 ISMS 的核心标准 ——ISO/IEC 27001 三、信息安全管理体系&#xff08;ISMS&#xff09;认证3.1 认证的意义与价值…

服务器数据恢复—服务器硬盘亮黄灯的数据恢复案例

服务器硬盘指示灯闪烁黄灯是一种警示&#xff0c;意味着服务器硬盘出现故障即将下线。发现这种情况建议及时更换硬盘。 一旦服务器上有大量数据频繁读写&#xff0c;硬盘指示灯会快速闪烁。服务器上某个硬盘的指示灯只有黄灯亮着&#xff0c;而其他颜色的灯没有亮的话&#xff…

AfuseKt1.4.4 | 刮削视频播放器,支持阿里云盘和自动海报墙

AfuseKt是一款功能强大的安卓端在线视频播放器&#xff0c;广泛兼容多种平台如阿里云盘、Alist、WebDAV、Emby、Jellyfin等&#xff0c;同时也支持本地存储视频文件的播放。其特色功能包括自动抓取影片信息生成海报墙展示&#xff0c;充分利用设备硬件进行高清视频流畅播放&…

数字孪生:物联+数据打造洞察世界新视角

引言&#xff1a;数字孪生是物理系统向信息空间映射的关键技术&#xff0c;通过传感器、数据分析、物联网&#xff0c;实现实时模拟和控制。新一代信息技术支撑数字孪生的广泛应用&#xff0c;使其在工业、城市、交通、医疗、水利等多领域实现虚拟与现实融合&#xff0c;促进经…

“AI智慧教学系统:开启个性化教育新时代

大家好&#xff0c;我是老王&#xff0c;一个在产品圈摸爬滚打多年的资深产品经理。今天&#xff0c;我想和大家聊聊一个最近特别火的概念——AI智慧教学系统。这东西听起来好像很高大上&#xff0c;但其实和我们每个人都息息相关&#xff0c;因为它关系到我们下一代的教育。 一…

【开源项目】数字孪生立交~东湖高新区互通式立交数字孪生可视化项目——开源工程及源码

飞渡科技数字孪生立交管理平台&#xff0c;依托国产自研数字孪生引擎&#xff0c;融合地理空间数据、倾斜摄影、人工智能及物联网IOT等多种技术&#xff0c;实现对立交的安全监测以及养护管理。 基于GIS技术&#xff0c;呈现立交的空间区位分布。 将交通流量数据以云图形式呈现…

树莓派 Pico RP2040 教程点灯 双核编程案例

双核点亮不同的 LED 示例&#xff0c;引脚分别是GP0跟GP1。 #include "pico/stdlib.h" #include "pico/multicore.h"#define LED1 0 // 核心 0 控制的 LED 引脚 #define LED2 1 // 核心 1 控制的 LED 引脚// the setup function runs once when you press …

ASA第六天笔记

Botnet Traffic Filter简介 1.僵死网络流量过滤特性是一个基于名誉的机制&#xff0c;用于阻止流量源自于或者去往已知的感染主机。 2.僵死网络流量过滤比较每一个连接中的源和目的IP地址。 动态SensorBase数据库&#xff0c;被Cisco动态更新。静态数据库&#xff0c;需要手动…

网关的主要作用

在网络安全领域&#xff0c;网关扮演着举足轻重的角色&#xff0c;它不仅是网络间的桥梁&#xff0c;更是安全防线的守护者。以下是网关在网络安全中的几个关键作用&#xff1a; 1. 防火墙功能&#xff1a;网关常常集成了防火墙技术&#xff0c;能够对进出网络的数据包进行严格…

【模型】Qwen2-VL 服务端UI

1. 前言 最近在测试VLM模型&#xff0c;发现官方的网页demo&#xff0c;代码中视频与图片分辨率可能由于高并发设置的很小&#xff0c;导致达不到预期效果&#xff0c;于是自己研究了一下&#xff0c;搞了一个简单的前端部署&#xff0c;自己在服务器部署了下UI界面&#xff0…

leetcode题目(3)

目录 1.加一 2.二进制求和 3.x的平方根 4.爬楼梯 5.颜色分类 6.二叉树的中序遍历 1.加一 https://leetcode.cn/problems/plus-one/ class Solution { public:vector<int> plusOne(vector<int>& digits) {int n digits.size();for(int i n -1;i>0;-…

数据库知识汇总2

一. 范式 定义&#xff1a;范式是符合某一种级别的关系模式的集合。 关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式&#xff1b; 一个低一级范式的关系模式&#xff0c;通过模式分解&#xff08;schema decomposition&#xff09;可以转换为若干个高一…

Eplan 布局图中的宏/设备/安装板比例缩放

在Eplan的布局图&#xff0c;有时要放大或缩小宏或设备&#xff0c;有两种办法 1.选中宏/设备/安装板等&#xff0c;在 编辑--图形中选择比例缩放即可&#xff0c;但这种方式会造成尺寸标注与实际长度不符&#xff0c;需要手动修改尺寸标注值。 2.修改页面的比例&#xff0c;在…

zookeeper+kafka

一、zookeeper 1.概述 zoo: 开源的分布式框架协调服务 zookeeper的工作机制&#xff1a;基于观察者模式设计的分布式结构&#xff0c;负责存储和管理架构当中的元信息&#xff0c;架构当中的应用接受观察者的监控&#xff0c;一旦数据有变化&#xff0c;通知对应的zookeeper&a…

Java项目实战II基于微信小程序的家庭大厨(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 在快节奏的生活中&#xff0c;家庭聚餐成为了连接亲情…

Ungoogled Chromium127 编译指南 MacOS 篇(一)- 项目介绍

1. 引言 在当今互联网时代&#xff0c;浏览器不仅是我们访问网络的窗口&#xff0c;更是保护个人隐私的重要工具。然而&#xff0c;主流浏览器普遍存在数据收集和隐私问题。大多数用户可能并不知道&#xff0c;当我们使用 Chrome 浏览器时&#xff0c;会有大量的个人数据被收集…

Alist-Sync-Web 网盘自动同步,网盘备份相互备份

Alist-Sync-Web 一个基于 Web 界面的 Alist 存储同步工具&#xff0c;支持多任务管理、定时同步、差异处理等功能。 功能特点 &#x1f4f1; 美观的 Web 管理界面&#x1f504; 支持多任务管理⏰ 支持 Cron 定时任务&#x1f4c2; 支持数据同步和文件同步两种模式&#x1f5…

前后端分离项目部署到云服务器、宝塔(前端vue、后端springboot)详细教程

一、部署介绍 部署的环境是宝塔&#xff08;宝塔9.0.0&#xff09;、阿里云服务器&#xff08;centos 7.6&#xff09;&#xff1b;前端是Vue3项目、后端是springboot3x、jdk11、数据库有redis、mysql&#xff1b;搜索采用的是es。 由于宝塔面板中可以快速进行环境的配置&…

ESP32-S3遇见OpenAI:OpenAI官方发布ESP32嵌入式实时RTC SDK

目录 OpenAI RTC SDK简介应用场景详解智能家居控制系统个人健康助手教育玩具 技术亮点解析低功耗设计快速响应高精度RTC安全性保障开发者指南 最近&#xff0c;OpenAI官方发布了一款针对ESP32-S3的嵌入式实时RTC&#xff08;实时时钟&#xff09;SDK&#xff0c;这标志着ESP32-…

【工具推荐】XSS 扫描器-XSStrike

介绍 XSStrike 是一个跨站点脚本检测套件&#xff0c;配备四个手写解析器、一个智能有效载荷生成器、一个强大的模糊测试引擎以及速度极快的爬虫。XSStrike 不会像其他工具一样注入有效载荷并检查其是否有效&#xff0c;而是使用多个解析器分析响应&#xff0c;然后通过与模糊…