小程序连接socket,不是websocket【已解决】uniapp版本+微信原生版本

uniapp微信小程序连接socket,不是websocket【已解决】uniapp版本+微信原生版本

uniapp微信小程序连接socket,不是websocket【已解决】uniapp版本+微信原生版本


原因:微信原生小程序不支持,要通过socket.io官方npm包解决。已测试

已测试:uniapp[开发的微信小程序]+原生微信小程序
未测试:h5
npm install weapp.socket.io@3.0.0

根目录:/utils/socket.js(自己创建)



// utils/socket.js
import io from 'weapp.socket.io';

let socket;

export function connectSocket(url) {
  socket = io(url);

  socket.on('connect', () => {
    console.log('connected');
  });

  socket.on('disconnect', () => {
    console.log('disconnected');
  });

  return socket;
}

export function getSocket() {
  return socket;
}

pages/index/index.vue

<!-- pages/index/index.vue -->
<template>
  <view>
    <button @click="sendMessage">Send Message</button>
    <view v-for="(msg, index) in messages" :key="index">{{ msg }}</view>
  </view>
</template>

<script>
import { connectSocket, getSocket } from '@/utils/socket.js';

export default {
  data() {
    return {
      messages: [],
      socketConnected: false
    };
  },
  created() {
    // 连接到 Socket.IO 服务器
    this.socket = connectSocket('http://your-server-url');
    
    // 监听连接成功事件
    this.socket.on('connect', () => {
      console.log('connected');
      this.socketConnected = true;
    });

    // 监听接收到消息事件
    this.socket.on('message', (data) => {
      console.log('message:', data);
      this.messages.push(data);
    });

    // 监听断开连接事件
    this.socket.on('disconnect', () => {
      console.log('disconnected');
      this.socketConnected = false;
    });
  },
  beforeDestroy() {
    // 组件销毁时关闭 Socket.IO 连接
    if (this.socket) {
      this.socket.close();
    }
  },
  methods: {
    sendMessage() {
      if (this.socketConnected) {
        this.socket.emit('message', 'Hello, server!');
      }
    }
  }
};
</script>

<style scoped>
/* 添加你的样式 */
</style>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uniapp微信小程序连接websocket,你需要使用uni-app提供的uni-ws组件。具体操作步骤如下: 1. 在你的uni-app项目中,创建一个新的页面,并在该页面中引入uni-ws组件 2. 在页面的data中定义websocket连接对象,并设置websocket服务器的地址 3. 在页面的onLoad生命周期函数中,使用uni.connectSocket()方法连接websocket服务器,并将连接对象赋值给data中的websocket对象 4. 监听websocket连接事件,并在连接成功后发送消息给服务器 5. 监听websocket消息事件,并在接收到消息后更新页面数据或执行相应操作 以下是一个简单的示例代码: ``` <template> <view> <text>{{message}}</text> </view> </template> <script> export default { data() { return { websocket: null, message: "" } }, onLoad() { this.connectWebSocket(); }, methods: { connectWebSocket() { const url = "ws://localhost:8080"; // websocket服务器地址 this.websocket = uni.connectSocket({ url, success: () => { console.log("websocket连接成功"); } }); this.websocket.onOpen(() => { console.log("websocket连接已打开"); const msg = "Hello, WebSocket!"; this.websocket.send({ data: msg }); }); this.websocket.onMessage((res) => { console.log("websocket收到消息:", res); this.message = res.data; }); this.websocket.onError((err) => { console.error("websocket连接出现错误:", err); }); this.websocket.onClose(() => { console.log("websocket连接已关闭"); }); } } } </script> ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值