NowJS 服务器事件通知

发布于 2024-12-26 13:17:50 字数 276 浏览 1 评论 0原文

我正在尝试实现一个系统,其中外部服务器 (SuperFeedr) 向我的服务器(运行 Node)和我的服务器进程发送请求,然后使用 NowJS 将该数据直接实时发送到客户端。

问题是,我无法访问服务器函数中的 everyonce 命名空间,因为必须在调用 Listen() 函数后对其进行初始化,而这必须在声明函数后进行。所以基本上:

需求:

NowJS->监听->服务器函数->每个人变量->NowJS

似乎我有一个依赖循环,我不知道如何解决它。

I'm trying to implement a system where an external server (SuperFeedr) sends a request to my server (running Node) and my server processes, then sends that data straight to the client in realtime using NowJS.

Problem is, I cannot access the everyonce namespace in my server functions since it has to be initialized after the listen() function is called which has to happen after the functions are declared. So basically:

Needs:

NowJS->Listen->Server functions->everyone variable->NowJS

Seems I have a dependency loop and I have no idea how to resolve it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

等风来 2025-01-02 13:17:50

独立启动所有这些。当其中一个启动时,将对它的引用放入共享父作用域中。例如,当服务器收到通知时,如果 nowjs 尚未准备好,则将其删除。简化示例:

var a, b;
initializeA(function(a_) {
  a = a_
  a.on('request', function(request, response) {
    if (!b) {
      // B isn't ready yet, drop the request
      return response.end()
    }
    // ...
  })
})
initializeB(function(b_) {
  b = b_
  b.on('request', function(request, response) {
    if (!a) {
      // A isn't ready yet, drop the request
      return response.end()
    }
    // ...
  })
})

Start all of them independently. When one of them is up, put a reference to it into a shared parent scope. When e.g. the server receives a notification, just drop it if nowjs isn't ready yet. Simplified example:

var a, b;
initializeA(function(a_) {
  a = a_
  a.on('request', function(request, response) {
    if (!b) {
      // B isn't ready yet, drop the request
      return response.end()
    }
    // ...
  })
})
initializeB(function(b_) {
  b = b_
  b.on('request', function(request, response) {
    if (!a) {
      // A isn't ready yet, drop the request
      return response.end()
    }
    // ...
  })
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文