使用uniapp实现websocket聊天功能

简介: 使用uniapp实现websocket聊天功能

在APP.vue里面配置  URL里面填写的是自己的地址

<script>
  export default {
    onLaunch: function() {
      console.log('App Launch')
    },
    onShow: function() {
      console.log('App Show')
      // 获取用户id(发送者)
      let id = uni.getStorageSync('id')
      // 创建ws连接
      uni.connectSocket({
        url: ''
      });
      // 监听ws打开状态
      uni.onSocketOpen((res) => {
        // console.log(123);
        console.log('连接成功');
        // 绑定发送id
        // ws链接状态
        setInterval(() => {
          console.log(111)
          uni.sendSocketMessage({
            data: JSON.stringify({
              type: `ping`,
            })
          });
        }, 1500);
        console.log('WebSocket连接已打开!');
      });
      
      let ta = this
      // ws监听接受消息
      uni.onSocketMessage((res) => {
        console.log(res.data)
        console.log(JSON.parse(res.data), 'aaaa');
        if (JSON.parse(res.data).type == 'chat') {
          that.data.push({
            ...JSON.parse(res.data)
          })
        }
      });
      uni.onSocketError((res) => {
        console.log('WebSocket连接打开失败,请检查!', res);
        uni.connectSocket({
          url: ''
        });
      });
      uni.onSocketClose((res) => {
        console.log('WebSocket 已关闭!');
        uni.connectSocket({
          url: ''
        });
      });
    },
    onHide: function() {
      console.log('App Hide')
    }
  }
</script>
<style lang="scss">
  /*每个页面公共css */
  @import "@/uni_modules/uview-ui/index.scss";
</style>

聊天列表页面的实现  可以根据自己的样式做调整

<template>
  <view>
    <div style="height: 30rpx"></div>
    <!-- 消息列表 -->
    <div class="big" v-for="(item,index) in data" :key="index" @click="goTalk(item.receive,item.img)">
      <div style="width: 10px"></div>
      <image :src="'http://wcy.jingyi.icu/'+item.img" mode="" class="Ai"></image>
      <div style="width: 10px"></div>
      <div class="contentOne">
        <div style="height: 10px"></div>
        <div class="Tow">
          <p class="text">{{item.name}}</p>
          <p>{{item.addtime}}</p>
        </div>
        <div style="height: 20rpx"></div>
        <div class="titleCon">{{item.content}}</div>
        <div style="height: 10rpx"></div>
      </div>
    </div>
    <u-tabbar :value="value" :placeholder="false" @change="change1" :fixed="true" :safeAreaInsetBottom="false">
      <u-tabbar-item text="首页" icon="home" @click="change"></u-tabbar-item>
      <u-tabbar-item text="消息" icon="chat" :badge="num" @click="change"></u-tabbar-item>
    </u-tabbar>
  </view>
</template>

聊天记录页面布局的实现

<template>
  <view class="chat">
    <scroll-view :style="{height: `${windowHeight-inputHeight}rpx`}" id="scrollview" scroll-y="true"
      :scroll-top="scrollTop" class="scroll-view">
      <!-- 聊天主体 -->
      <view id="msglistview" class="chat-body">
        <!-- 聊天记录 -->
        <view v-for="(item,index) in data" :key="index">
          <!-- <view class="nows_time">
            <view class="am_pm_time">{{item.addtime}}</view>
          </view> -->
          <!-- 自己的内容 -->
          <view class="item self" v-if="item.sender == id">
            <!-- 文字内容 -->
            <view class="content right">
              {{item.content}}
            </view>
            <view class="avatar">
              <image :src="Himg" mode=""></image>
            </view>
          </view>
          <!-- 左侧内容 -->
          <view class="item Ai" v-if="item.sender != id">
            <view class="avatar">
              <image :src="Timg" mode=""></image>
            </view>
            <!-- 文字内容 -->
            <view class="content left">
              {{item.content}}
            </view>
          </view>
        </view>
      </view>
    </scroll-view>
    <!-- 防止聊天消息被发送框遮挡 -->
    <view class="chat-bottom" :style="{height: `${inputHeight}rpx`}">
      <view class="send-msg" :style="{bottom:`${keyboardHeight}rpx`}">
        <view class="uni-textarea">
          <textarea v-model="chatMsg" maxlength="300" confirm-type="send" @confirm="handleSend"
            :show-confirm-bar="false" @linechange="sendHeight" auto-height></textarea>
        </view>
        <button @tap="sends" class="send-btn">发送</button>
      </view>
    </view>
  </view>
</template>

 

相关文章
|
4月前
|
前端开发 JavaScript UED
探索Python Django中的WebSocket集成:为前后端分离应用添加实时通信功能
通过在Django项目中集成Channels和WebSocket,我们能够为前后端分离的应用添加实时通信功能,实现诸如在线聊天、实时数据更新等交互式场景。这不仅增强了应用的功能性,也提升了用户体验。随着实时Web应用的日益普及,掌握Django Channels和WebSocket的集成将为开发者开启新的可能性,推动Web应用的发展迈向更高层次的实时性和交互性。
124 1
|
11天前
|
小程序 前端开发 关系型数据库
基于Uniapp+php校园小程序,校园圈子论坛系统功能,校园跑腿二手交流功能设计
校园圈子论坛及综合服务平台集成了校园跑腿、兼职信息、外卖团购、闲置交换、租赁服务、表白墙等多功能模块,提供一站式校园生活解决方案。系统采用uniapp前端和PHP后端开发,支持多城市、多学校切换,配备分站式后台管理,确保稳定性和安全性。通过融云IM SDK实现即时通讯功能,增强用户互动与粘性。适用于大学校园、城市及社区圈子,满足多样化需求,提升便捷体验。
|
13天前
|
弹性计算 JSON 自然语言处理
语音交互产品通过WebSocket协议对外提供实时语音流语音转写功能
阿里云智能语音交互产品通过WebSocket协议提供实时语音转写功能,支持长语音。音频流以Binary Frame上传,指令和事件为Text Frame。支持单声道、16 bit采样位数的PCM、WAV等格式,采样率8000Hz/16000Hz。可设置返回中间结果、添加标点、中文数字转阿拉伯数字,并支持多语言识别。服务端通过临时Token鉴权,提供外网和上海ECS内网访问URL。交互流程包括StartTranscription、StopTranscription指令及多种事件反馈。
|
5月前
|
存储 JavaScript 前端开发
webSocket+Node+Js实现在线聊天(包含所有代码)
文章介绍了如何使用WebSocket、Node.js和JavaScript实现在线聊天功能,包括完整的前端和后端代码示例。
302 0
|
2月前
|
PHP
全新uniapp小说漫画APP小说源码/会员阅读/月票功能
价值980的uniapp小说漫画APP小说源码/会员阅读/月票功能
113 20
|
2月前
|
前端开发 数据库 UED
uniapp开发,前后端分离的陪玩系统优势,陪玩app功能特点,线上聊天线下陪玩,只要4800
前后端分离的陪玩系统将前端(用户界面)和后端(服务器逻辑)分开开发,前者负责页面渲染与用户交互,后者处理数据并提供接口。该架构提高开发效率、优化用户体验、增强可扩展性和稳定性,降低维护成本,提升安全性。玩家可发布陪玩需求,陪玩人员发布服务信息,支持在线聊天、预约及线下陪玩功能,满足多样化需求。[演示链接](https://www.51duoke.cn/games/?id=7)
|
2月前
|
网络协议 应用服务中间件 网络安全
odoo17在线聊天报错提示 Couldn‘t bind the websocket...
当 Odoo 17 报错 "Couldn't bind the websocket..." 时,通过检查和配置 WebSocket 端口、防火墙规则、代理服务器以及 Odoo 配置文件,可以有效解决此问题。确保每一步操作准确无误,最终重启相关服务,使配置生效。希望这些步骤能帮助您快速恢复 Odoo 的在线聊天功能。
74 1
|
6月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
145 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
4月前
|
JavaScript 数据安全/隐私保护
uniapp功能权限判断$auth.auth $auth.role显示判断生成源码
uniapp功能权限判断$auth.auth $auth.role显示判断生成源码
48 0
|
6月前
|
开发框架 移动开发 前端开发
基于SqlSugar的开发框架循序渐进介绍(19)-- 基于UniApp+Vue的移动前端的功能介绍
基于SqlSugar的开发框架循序渐进介绍(19)-- 基于UniApp+Vue的移动前端的功能介绍

热门文章

最新文章