如何监听自己触发的Socket事件

时间:2019-05-30 10:59:56

标签: javascript socket.io

例如,客户端通过套接字发送文档,而另一个客户端在该事件中进行监听以获取新文档。客户端A将新文档发送到套接字,并将其推入本地阵列。

// Client A
const documents =  []

sendDocument() {
      if (!this.document.trim()) return
      // Predefine Object
      const document = {
        author: this.authUser.username,
        date: new Date().toJSON(),
        text: this.document.trim()
      }
      // Post via Socket
      socket.emit(`send-document`, document)
      // Add Document into local Documents-Array
      documents.push(document);
},

然后套接字服务器将该文档广播到客户端B

// Socket Server
const docs = []

socket.on(`send-document`, async (data) => {
    // We use PouchDB as DB Solution
    try {
      db.post(data)
    } catch (err) {
      throw err;
    }
    // Push new Document into Servers Docs-Array
    docs.push(data)
    // Broadcast new Document to other Clients
    socket.broadcast.emit(`new-document`, data)
})

因此,现在客户端B监听该事件并获取客户端A发送的新文档

// Client B
const documents = []

socket.on(`new-document`, (document) => {
      this.documents.push(document)
})

到目前为止,一切都很好。奇迹般有效。

但是现在我希望客户端A像客户端B一样监听客户端A触发的事件。

我不想让客户端推送其自己创建的文档-我希望客户端监听事件,然后推送接收到的文档。

为什么会问

好吧,这是因为PouchDB在Socket-Server上创建了_id属性,我需要所有客户端(尤其是创建者Client)使用。

所以我的问题是,如何监听客户端触发自身的事件。目前只有其他客户端在监听,但是创建者客户端不会在监听自己。

我希望清楚,我的意思是:)

有什么想法可以做到吗?

0 个答案:

没有答案