当前位置: 首页 > news >正文

PHP框架+gatewayworker实现在线1对1聊天--接收消息(7)

文章目录

    • 接收消息的原理
    • 接收消息
      • JavaScript代码

接收消息的原理

接收消息,就是接受服务器转发的客户端消息。并不需要单独创建函数,因为 ws.onmessage会自动接收消息。我们需要在这个函数里进行处理。因为初始化的时候,已经处理的init类型的消息。这次处理text类型的消息。把接收到的消息展示在聊天窗口左侧,追加而已。
在这里插入图片描述

接收消息

JavaScript代码

ws.onmessage=function (e){// json数据转换成js对象var data = eval("("+e.data+")");var type = data.type || '';console.log(data)switch(type){// Events.php中返回的init类型的消息,将client_id发给后台进行uid绑定case 'init':// 利用jquery发起ajax请求,将client_id发给后端进行uid绑定$.post('/chat.php/Chat/bind', {client_id: data.client_id}, function(data){}, 'json');                              break;// 当mvc框架调用GatewayClient发消息时直接alert出来case 'text':var content=data.content;var content_type=data.content_type;var f_id=data.from_id;if (f_id !=to_id){//不接收其他人给当前用户发来的消息在此展示/*如果当前用户为a,和b、c同时聊天,应该是打开两个聊天界面。但是b、c给发送的消息都会发给a,a的两个界面同时接收。就会造成消息乱展示。所以,如果不是当前聊天的对方发来的消息,就不展示。*/}else{var html=render_accept(content,content_type);$('#chat_content').append(html);}break;// 当mvc框架调用GatewayClient发消息时直接alert出来case "logout":console.log('掉线了')break;default :alert(e.data);}}//接收到的消息渲染,渲染对方的消息,在左侧。function render_accept(content,content_type) {var html='<div class="media">' +'            <div class="media-left">' +'                <img class="media-object avatar" src="'+to_avatar+'" alt="...">' +'            </div>' +'            <div class="media-body">' +'                <h4 class="media-heading">'+to_user_name+'</h4>' ;if(content_type==1){html+='                <p class="chat_msg_left">'+content+'</p>' ;}if(content_type==2 ){html+='                <p class="chat_msg_left"><img src="'+content+'"/></p>' ;}if(content_type==3 ){html+='                <p class="chat_msg_left"><img src="'+content+'" class="emoj_w"/></p>' ;}html+='            </div>' +'        </div>';return html;}

到这里,接收消息就做完了。

http://www.lryc.cn/news/516199.html

相关文章:

  • 18.1、网络安全策略分类 流程 内容
  • 深入理解连接池:从数据库到HTTP的优化之道
  • 【2025最新计算机毕业设计】基于SpringBoot+Vue智慧养老医护系统(高质量源码,提供文档,免费部署到本地)【提供源码+答辩PPT+文档+项目部署】
  • 关于使用vue-cropperjs上传一张图后,再次上传时,裁剪的图片不更新的问题
  • 学习threejs,导入VTK格式的模型
  • 大麦抢票科技狠活
  • PostgreSQL 表达式
  • WPF区域导航+导航参数使用+路由守卫+导航日志
  • Springboot启动报错:Failed to start bean ‘documentationPluginsBootstrapper‘
  • qt-C++笔记之动画框架(Qt Animation Framework)入门
  • C++26 函数契约(Contract)概览
  • Flink CDC 自定义函数处理 SQLServer XML类型数据 映射 doris json字段方案
  • F.interpolate函数
  • 华为交换机---自动备份配置到指定ftp/sftp服务器
  • nginx学习之路-nginx配置https服务器
  • UCAS 24秋网络认证技术 CH10 SSL 复习
  • 【linux内核分析-存储】EXT4源码分析之“文件删除”原理【七万字超长合并版】(源码+关键细节分析)
  • 代码随想录 day62 第十一章 图论part11
  • springboot571基于协同过滤算法的私人诊所管理系统(论文+源码)_kaic
  • Uniapp Android 本地离线打包(详细流程)
  • vite+vue3动态引入资源文件(问题已解决但离了个大谱)
  • 通过 4 种方式快速将音乐从 iPod 传输到 Android
  • ArcGIS中怎么把数据提取到指定范围(裁剪、掩膜提取)
  • 【Vaadin flow 实战】第3讲-快速上手构建VaadinFlow+Springboot的全栈web项目
  • HBase Cassandra的部署和操作
  • 用户界面软件01
  • 【云原生】Docker Compose 从入门到实战使用详解
  • 【ShuQiHere】使用 SCP 进行安全文件传输
  • 海康威视H5player问题汇总大全
  • 力扣23.合并K个升序链表