vue之消息发送与接收组件

首先得在vue中建立全局消息的一个组件ts文件:MessageBus.ts
//列子可以建在store文件下(不知道组件建这什么地方 的情况下);

组件的内容有:消息、注册事件(就是消息的接收事件)、发送事件;

/**
 * 全局消息组件
 * @param Vue
 */
class MessageBus {
    // 消息
    private static messageQueue: Map<string, any> = new Map<string, any>();

    /**
     * 注册事件
     * @topic:      主题名称
     * @callback:   回调事件
     */
    public static addEventListener = (topic: string, callback: any) => {
        MessageBus.messageQueue.set(topic, callback);
    };

    /**
     * 发送事件
     * @topic:  主题名称
     * @data:   发送数据
     */
    public static onSend = (topic: string, data) => {
        let callback = MessageBus.messageQueue.get(topic);
        if (callback instanceof Function) {
            callback(data);
        }
    };
}

export default MessageBus;

接下来就是如何使用我们的组件:

1,onSend()发送信息事件:

     一,在我们需要发送消息的ts文件里面引入MessageBus.ts。并onSend() 发送文件;

     二,onSend() 发送文件注意需要两个入参(),类型一般是String、内容any(指任意类型)。

import MessageBus from "@/store/MessageBus";
 const checkModelPass = (feedback) => {
            if (feedback) {
                return;
            }
            batchAddModelFeedback(feedback).then(res => {
                if (res.success) {
                    MessageBus.onSend("updateModelAuditState", {
                        status: AuditStatus.NOT_PASS,
                        groupIds: props.groupIds as []
                    });
                    emit("update:show", false);
                    emit("reject", true);
                }
            });
        };

2,addEventListener()接收消息。

     一,同样引入messageBus.ts。

     二,发送时指定的updateModelAuditState,接收也必须以它来接收,列:

MessageBus.addEventListener("updateModelAuditState", ({ groupIds, status }) => {
            //可以先打印接收值
            console.log("groupIds值:" , groupIds);
            console.log("status值:", status);
            treeNodes.forEach(node => {
                if (node && node.children) {
                    recursionSetStatus(node.children, status, groupIds);
                }
            });
        });

总结: 这里和组件之间的传值目的是一样的。一个需要定义传输内容,一个需要接收内容。不同点是这两个不相干的组件没有任何的联系时采用的全局组件方法:使用的是vue3,typeScript的写法。有用则参考

 

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vue WebSocket发送接收消息的过程相对简单。首先,我们需要在Vue项目中安装WebSocket的依赖包。可以使用npm或者yarn来安装,具体命令如下: ```bash npm install vue-native-websocket ``` 然后,在Vue组件中引入WebSocket,并在数据部分定义WebSocket连接以及消息的相关数据。 ```javascript import VueNativeSock from 'vue-native-websocket' export default { data() { return { socket: { isConnected: false, message: '' } } }, created() { this.$options.sockets.onmessage = (messageEvent) => { this.socket.message = messageEvent.data } this.$options.sockets.onopen = () => { this.socket.isConnected = true } this.$options.sockets.onclose = () => { this.socket.isConnected = false } }, // ... } ``` 其中,`this.$options.sockets.onmessage`用来监听消息接收事件,`this.$options.sockets.onopen`用来监听连接成功事件,`this.$options.sockets.onclose`用来监听连接关闭事件。 接下来,我们需要在组件中定义发送消息的方法。通过调用`this.$socket.send()`方法来发送消息。 ```javascript export default { // ... methods: { sendMessage() { if (this.socket.isConnected) { this.$socket.send('Hello, WebSocket!') } } } } ``` 上述代码中,我们通过`this.$socket.send()`方法来发送消息给WebSocket服务器,其中参数是要发送消息内容。 最后,在组件的模板中展示接收到的消息以及提供发送消息的按钮。 ```html <template> <div> <p>{{ socket.message }}</p> <button @click="sendMessage">发送消息</button> </div> </template> ``` 通过上述配置,我们就可以在Vue项目中使用WebSocket进行消息发送接收了。当WebSocket连接成功时,可以发送消息;当WebSocket接收消息时,可以在界面上展示出来。 ### 回答2: Vue中使用WebSocket发送接收消息有以下几个步骤: 1. 首先,在Vue项目中安装一个WebSocket客户端库,比如`vue-native-websocket`或`vue-socket.io`。 2. 在Vue组件中引入WebSocket库,并创建一个WebSocket实例。可以在`created`或`mounted`生命周期钩子函数中进行。 ``` import VueNativeSock from 'vue-native-websocket'; export default { created() { Vue.use(VueNativeSock, 'ws://localhost:8080/ws', { format: 'json' }); }, }; ``` 3. 监听WebSocket的连接成功事件,并在回调函数中发送消息。 ``` export default { created() { Vue.use(VueNativeSock, 'ws://localhost:8080/ws', { format: 'json' }); this.$options.sockets.onopen = () => { this.$socket.send(JSON.stringify({ message: 'Hello WebSocket!' })); }; }, }; ``` 4. 监听WebSocket的消息接收事件,并在回调函数中处理接收到的消息。 ``` export default { created() { Vue.use(VueNativeSock, 'ws://localhost:8080/ws', { format: 'json' }); this.$options.sockets.onmessage = (event) => { const message = JSON.parse(event.data); console.log(message); }; }, }; ``` 5. 可以使用Vue的响应式数据来实时更新页面上的内容,比如在接收消息后更新页面中的某个变量或列表。 ``` export default { data() { return { messages: [], }; }, created() { Vue.use(VueNativeSock, 'ws://localhost:8080/ws', { format: 'json' }); this.$options.sockets.onmessage = (event) => { const message = JSON.parse(event.data); this.messages.push(message); }; }, }; ``` 通过以上步骤,我们就可以在Vue中实现WebSocket的消息发送接收。当WebSocket连接成功后,可以通过`send`方法发送消息,同时可以监听`onmessage`事件来接收消息,并做相应的处理。 ### 回答3: Vue.js 是一个用于构建用户界面的渐进式JavaScript 框架,它可以很方便地与WebSocket 结合使用来实现消息发送接收。 在Vue.js 中使用WebSocket,首先要创建WebSocket 实例,并指定连接的URL。可以在Vue组件的created生命周期钩子中创建WebSocket 实例,并使用onmessage 事件监听接收到的消息。例如: ```javascript created() { this.socket = new WebSocket('ws://example.com'); this.socket.onmessage = (event) => { const message = event.data; console.log('Received message:', message); // 其他逻辑处理... }; }, ``` 在发送消息时,可以在组件的方法中调用WebSocket 实例的send()方法来发送消息。例如: ```javascript methods: { sendMessage() { const message = 'Hello, WebSocket!'; this.socket.send(message); console.log('Sent message:', message); // 其他逻辑处理... } }, ``` 在Vue组件的模板中,可以绑定按钮的点击事件来调用sendMessage() 方法。 ```html <button @click="sendMessage">发送消息</button> ``` 需要注意的是,WebSocket 连接是异步的,所以需要进行适当的错误处理。可以使用WebSocket实例的onerror、onclose 事件来处理连接出错和关闭连接的情况。 以上就是使用Vue和WebSocket 来发送接收消息的基本方法。当然,根据具体的需求,还可以进一步封装WebSocket模块,提供更便捷的API。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值