簡體   English   中英

JavaScript-如何為Socket.io事件創建自定義API偵聽器?

[英]JavaScript - How to create custom API listener for Socket.io events?

我正在嘗試為我的網站上的3rd開發人員創建自定義API偵聽器。 它看起來應該像這樣:

// Function will be fired when any user joins to room
API.on('user-join', function(data){
  console.log(data); // Data is object with user id and name
});

我也有Socket.io監聽器

// This handler is fired every time when anyone joins
socket.on('user-join', function(data){
  // Probably here i should call a callback to API.on('user-join') with that data object
});

如何在Socket.io處理程序中將回調發送到自定義創建的API? 請讓我知道該怎么做。 謝謝。

不確定您要做什么,但是如果我理解正確,您想將socket.io API的“ on”功能映射到您的API。

最好的方法是實現如下功能:

API.on = (eventName, callback) => {
    socket.on(eventName, callback);
}

其中eventName是字符串,回調函數。

這樣,您可以將事件偵聽器添加到您的API中,就像使用Socket.io Eg一樣:

API.on('testEvent', (obj) => {console.log(obj});

你正在把事情混在一起。

您的套接字API將需要一個獨立於套接字API的服務器端偵聽器,據我所知,它可以通過連接的客戶端管理IO,對嗎?

在這種情況下,您不必綁定任何東西。 您需要一個用於API套接字的控制器,而客戶端的控制器必須向這些用戶觸發事件。

  • 客戶連接到您的網站
  • 服務器收到通知
  • 服務器通知API用戶

這是一些偽代碼,請不要使用它,它只是說明了一個概念:D

const thrdUsers = [.....] // socket connections
const onThirdUserConnects = socket => thrdUsers.push(socket);
API.on('connect', onThirdUsersConnects);

// Then you need a broadcast function to send events to all your clients
const broadcastToAPI = (msg, val) => thrdUsers.forEach(s => s.send(msg, val));

// Your users will trigger events to your socket.io service
socket.on('whatever-event', (data) => {
  //...Do stuff
  // notify the API clients
  broadcastToAPI('whatever-event', data);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM