我参考这个文档 https://doc.dcloud.net.cn/uniCloud/websocket.html
,写了如下demo,前端提示建立链接了,但是云对象没有打印信息,这个是什么原因?
vue页面
<template>
<view class="container">
<button type="primary" @click="connect()">连接 WebSocket</button>
<button type="warn" @click="disconnect()">断开连接</button>
<view class="input-area">
<input v-model="message" placeholder="输入要发送的消息" />
<button @click="sendMessage()">发送消</button>
</view>
<view class="logs">
<text v-for="(log, index) in logs" :key="index">{{ log }}</text>
</view>
</view>
</template>
<script setup>
import { ref,onBeforeUnmount } from 'vue';
import {onLoad} from "@dcloudio/uni-app"
let socketTask = ref(null) ;
const message = ref('');
const logs = ref([]);
onBeforeUnmount(()=>{
this.disconnect()
})
// 建立连接
async function connect() {
this.socketTask = await uniCloud.connectWebSocket({
name: 'ws-demo',
query: { userId: 'user123' } // 自定义查询参
})
this.socketTask.onOpen(() => {
this.addLog('连接已建')
})
this.socketTask.onMessage((res) => {
this.addLog('收到消息: ' + res.data)
})
this.socketTask.onClose(() => {
this.addLog('连接已关')
})
this.socketTask.onError((err) => {
this.addLog('连接错误: ' + JSON.stringify(err))
})
}
// 发送消�?
function sendMessage() {
if (!this.message) return
this.socketTask.send({
data: this.message
})
this.addLog('已发: ' + this.message)
this.message = ''
}
// 断开连接
function disconnect() {
if (this.socketTask) {
this.socketTask.close()
}
}
// 记录日志
function addLog(log) {
this.logs.unshift(`[${new Date().toLocaleTimeString()}] ${log}`)
}
</script>
<style>
.container {
padding: 20px;
}
.input-area {
margin: 20px 0;
display: flex;
gap: 10px;
}
.logs {
margin-top: 20px;
background-color: #f5f5f5;
padding: 10px;
max-height: 300px;
overflow-y: auto;
}
</style>
云对象
// 云对象教程: https://uniapp.dcloud.net.cn/uniCloud/cloud-obj
// jsdoc语法提示教程:https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/129
console.log('云对象 ws-demo 已加载');
module.exports = {
_onWebsocketConnection:function(event){
console.log("onWebsocketConnection", event)
},
_onWebsocketMessage:function(event){
console.log("onWebsocketMessage", event)
},
_onWebsocketDisConnection:function(event) {
console.log("onWebsocketDisConnection", event)
},
_onWebsocketError:function(event){
console.log("onWebsocketError", event)
},
_before:function(){ // 通用预处理器
},
}
3 个回复
y***@qq.com (作者)
我把云对象推到云端,数据库有产生数据的,websocket 是不是自动连接到云端的?
DCloud_uniCloud_CRL
云对象有日志吗?
y***@qq.com (作者)
现在的问题是,怎么链接本地的云对象,现在是自动链接云端的云对象,本地对象没有任何相应的
this.socketTask = await uniCloud.connectWebSocket({
name: 'ws-demo',
query: { userId: 'user123' } // 自定义查询参
})
DCloud_uniCloud_CRL
websocket 只有云端支持
2025-04-27 14:43
y***@qq.com (作者)
回复 DCloud_uniCloud_CRL: 好的,谢谢!
2025-04-27 14:51