【WebSocket】实现Vue发送表情

2 篇文章 0 订阅
1 篇文章 0 订阅

实现效果:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
代码:
emojiArr.js:JSON文件,业务中可到数据库查找动态生成

var emojiArr = [
  {
    name: '热门',
    iconArr: [{
      className: 'bg-1f4b0',
      icon: '💰'

    },
      {
        className: 'bg-1f604',
        icon: '😄'

      },
      {
        className: 'bg-1f60d',
        icon: '😍'

      },
      {
        className: 'bg-1f631',
        icon: '😱'

      },
      {
        className: 'bg-1f602',
        icon: '😂'

      },
      {
        className: 'bg-1f353',
        icon: '🍓'

      },
      {
        className: 'bg-1f37a',
        icon: '🍺'

      },
      {
        className: 'bg-f2615',
        icon: '☕'

      },
      {
        className: 'bg-1f340',
        icon: '🍀'

      },
      {
        className: 'bg-1f331',
        icon: '🌱'

      },
      {
        className: 'bg-f2728',
        icon: '✨'

      },
      {
        className: 'bg-f26a1',
        icon: '⚡'

      },
      {
        className: 'bg-1f4ab',
        icon: '💫'

      },
      {
        className: 'bg-1f4a5',
        icon: '💥'

      },
      {
        className: 'bg-1f3b5',
        icon: '🎵'

      },
      {
        className: 'bg-1f44f',
        icon: '👏'

      },
      {
        className: 'bg-1f4aa',
        icon: '💪'

      },
      {
        className: 'bg-1f44d',
        icon: '👍'

      },
      {
        className: 'bg-1f449',
        icon: '👉'

      },
      {
        className: 'bg-1f448',
        icon: '👈'

      },
      {
        className: 'bg-1f447',
        icon: '👇'

      },
      {
        className: 'bg-1f446',
        icon: '👆'

      },
      {
        className: 'bg-1f44a',
        icon: '👊'

      },
      {
        className: 'bg-1f48b',
        icon: '💋'

      },
      {
        className: 'bg-1f48d',
        icon: '💍'

      },
      {
        className: 'bg-1f451',
        icon: '👑'

      },
      {
        className: 'bg-1f4a5',
        icon: '💥'

      },
      {
        className: 'bg-1f495',
        icon: '💕'

      },
      {
        className: 'bg-1f496',
        icon: '💖'

      },
      {
        className: 'bg-1f389',
        icon: '🎉'

      },
      {
        className: 'bg-1f47b',
        icon: '👻'

      },
      {
        className: 'bg-f3299',
        icon: '㊙'

      },
      {
        className: 'bg-1f51e',
        icon: '🔞'

      },

      {
        className: 'bg-f2705',
        icon: '✅'

      },
      {
        className: 'bg-f2b07',
        icon: '⬇'

      },
      {
        className: 'bg-f27a1',
        icon: '➡'

      },
      {
        className: 'bg-1f4af',
        icon: '💯'

      },
      {
        className: 'bg-f2714',
        icon: '✔'

      },
      {
        className: 'bg-f2611',
        icon: '☑'

      },
      {
        className: 'bg-f2757',
        icon: '❗'

      },
      {
        className: 'bg-f2753',
        icon: '❓'

      },
      {
        className: 'bg-f2b55',
        icon: '⭕'

      },
      {
        className: 'bg-1f680',
        icon: '🚀'

      },
      {
        className: 'bg-f2708',
        icon: '✈'

      },
      {
        className: 'bg-1f697',
        icon: '🚗'

      },
      {
        className: 'bg-f26a0',
        icon: '⚠'

      },
      {
        className: 'bg-f2693',
        icon: '⚓'

      },
      {
        className: 'bg-1f4e2',
        icon: '📢'

      },
      {
        className: 'bg-1f514',
        icon: '🔔'

      },
      {
        className: 'bg-1f381',
        icon: '🎁'

      },
      {
        className: 'bg-1f384',
        icon: '🎄'

      },
      {
        className: 'bg-1f49b',
        icon: '💛'

      },
      {
        className: 'bg-1f525',
        icon: '🔥'

      },
      {
        className: 'bg-1f485',
        icon: '💅'

      },

      {
        className: 'bg-1f64b',
        icon: '🙋'

      },
      {
        className: 'bg-1f004',
        icon: '🀄'

      },
      {
        className: 'bg-1f33b',
        icon: '🌻'

      },
      {
        className: 'bg-1f37b',
        icon: '🍻'

      },
      {
        className: 'bg-1f648',
        icon: '🙈'

      },
      {
        className: 'bg-1f618',
        icon: '😘'

      },
      {
        className: 'bg-f3030',
        icon: '〰'

      }

    ]
  }
]
export {
  emojiArr
}

聊天室vue文件的发送消息处:获得选中表情的对象,后把对象填充到聊天室的输入框处即可

    <div class="line">
      <div @click="bqb">表情</div>
        <div id="emoji" slot="content" v-show="show" style="z-index: 9999">
          <el-tabs @tab-click="tabClick">
            <el-tab-pane
              :label="item.name"
              v-for="(item, index) in faceList"
              :key="index"
            >
              <div class="img-div" style="overflow: auto; height: 530px">
                <i
                  class="emoji"
                  v-for="(item1, index1) in faceList[tabIndex].iconArr"
                  :key="index1"
                  @click="clickEmoji(item1.icon)"
                  style="cursor: pointer"
                >
                  {{ item1.icon }}
                </i>
              </div>
            </el-tab-pane>
          </el-tabs>
        </div>
    </div>
methos:{
    // 点击表情包
    clickEmoji(val) {
      // debugger;
      // 获取textarea输入框元素节点
      let ele = document.querySelector("#textarea");

      // 获取光标
      let cursor = ele.selectionStart;
      // 设置文本内容
      ele.setRangeText(val);
      // 移动光标并聚焦
      ele.selectionStart = cursor + 2;
      ele.focus();
      // 使文本输入框的内容等于当前的值
      this.msg = ele.value;
      this.show = false;
    },
    // 点击标签页
    tabClick(tab) {
      this.tabIndex = tab.index - 0;
    },
    bqb() {
      if (this.show == true) {
        this.show = false;
      } else {
        this.show = true;
      }
    },
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Vue中使用WebSocket发送图片,您可以按照以下步骤进行操作: 1. 在Vue中安装WebSocket库,例如 `npm install --save vue-native-websocket` 2. 在Vue组件中导入WebSocket库,并在 `created()` 钩子函数中初始化WebSocket连接: ``` import VueNativeSock from 'vue-native-websocket' export default { created() { this.$options.sockets = { connect: () => { console.log('WebSocket connected') }, disconnect: () => { console.log('WebSocket disconnected') } } this.$connect('ws://localhost:8080') } } ``` 3. 创建一个input元素以允许用户选择要上传的图片: ``` <input type="file" ref="fileInput" @change="uploadImage"> ``` 4. 在 `uploadImage` 方法中,将选择的图片转换为Base64编码,并将其发送WebSocket服务器: ``` methods: { uploadImage() { const file = this.$refs.fileInput.files[0] const reader = new FileReader() reader.onload = (event) => { const base64Image = event.target.result this.$socket.sendObj({ type: 'image', data: base64Image }) } reader.readAsDataURL(file) } } ``` 5. 在WebSocket服务器上,您可以接收到消息并将其转换回图像: ``` const WebSocketServer = require('websocket').server const http = require('http') const server = http.createServer((request, response) => { console.log('Received request for', request.url) response.writeHead(404) response.end() }) server.listen(8080, () => { console.log('Server is listening on port 8080') }) const wsServer = new WebSocketServer({ httpServer: server }) wsServer.on('request', (request) => { const connection = request.accept() console.log('WebSocket connection accepted') connection.on('message', (message) => { if (message.type === 'utf8') { console.log(`Received message ${message.utf8Data}`) } else if (message.type === 'binary') { console.log('Received binary message') const image = Buffer.from(message.binaryData, 'base64') // 处理图像 } }) connection.on('close', (reasonCode, description) => { console.log('WebSocket disconnected') }) }) ``` 这样,您就可以使用WebSocketVue发送图片。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值