js websocket onmessage中添加callback,实现不同message由不同callback处理

在JavaScript中,WebSocket的onmessage事件通常是一个事件监听器,它会在接收到新的WebSocket消息时被触发。如果你想根据接收到的消息内容执行不同的回调函数,你可以创建一个简单的映射(例如对象或Map)来存储这些回调函数,并在onmessage事件处理器中根据消息类型或内容调用相应的回调函数。

以下是一个示例,展示了如何实现这一点:

// 假设我们有一些处理函数  
function handleMessageA(data) {  
    console.log('处理A类型消息:', data);  
}  
  
function handleMessageB(data) {  
    console.log('处理B类型消息:', data);  
}  
  
// 创建一个映射来存储处理函数  
const messageHandlers = {  
    'typeA': handleMessageA,  
    'typeB': handleMessageB  
    // 可以添加更多类型...  
};  
  
// WebSocket连接代码(这里仅展示onmessage部分)  
const ws = new WebSocket('ws://your-websocket-server.com');  
  
ws.onmessage = function(event) {  
    // 解析消息内容(这取决于你的消息格式)  
    // 假设消息是一个JSON字符串,其中包含一个'type'字段和一个'data'字段  
    try {  
        const message = JSON.parse(event.data);  
        const type = message.type; // 获取消息类型  
        const data = message.data; // 获取消息数据  
  
        // 检查是否有对应的处理函数  
        if (messageHandlers[type]) {  
            // 调用处理函数并传入数据  
            messageHandlers[type](data);  
        } else {  
            console.warn('没有找到处理', type, '类型的函数');  
        }  
    } catch (error) {  
        console.error('解析消息时出错:', error);  
    }  
};  
  
// 其他WebSocket事件处理代码(如onopen, onclose, onerror)...

在这个示例中,我们首先定义了两个处理函数handleMessageAhandleMessageB。然后,我们创建了一个名为messageHandlers的对象,其中键是消息类型,值是相应的处理函数。在WebSocket的onmessage事件处理器中,我们解析接收到的消息(假设它是一个JSON字符串),然后根据消息类型从messageHandlers对象中获取相应的处理函数,并调用它。如果找不到处理函数,我们就在控制台中打印一条警告消息。

Was this helpful?

0 / 0

发表回复 0