如何正确设置基于服务器的深度流 RPC 提供程序?

How does one correctly set up a server based deepstream RPC provider?

我正在使用 deepstream 构建 SOA,我想使用 deepstream 客户端服务器执行用户不应该知道的基于 API-KEY 的查找。我实际上如何设置 RPC 客户端提供程序?我查看了 deepstream 文档和 google,但没有关于如何执行此操作的完整代码示例。我创建了一个如下所示的文件,并使用 node.js 创建了 运行 它。我得到的输出在它下面:

var deepstream = require('deepstream.io-client-js')
const client = deepstream('localhost:6020').login()
console.log('Starting up')
client.on('error', (error,event,topic) => {
  console.log(error, event, topic);
})

client.on('connectionStateChanged', connectionState => {
  console.log(connectionState);
})

client.login({username: 'USER', password: 'PASSWORD'}, (success, data) => {
  if (success) {
    client.rpc.provide('the-rpc', function( data, response ){
      response.send(data);
    });
  } else {
    console.log(data);
  }
})

--

Starting up
AWAITING_CONNECTION

如您所见,运行是代码,但实际上并没有连接到 deepstream 服务器。我已经有了 deepstream 服务器 运行ning 和一个连接到它的浏览器客户端,所以配置是正确的。请帮忙!

我认为你的问题是基于你试图通过网络端口连接节点这一事实。尝试使用端口 6021 代替 tcp(由节点客户端使用)。

const client = deepstream('localhost:6021').login()

你也应该只调用 .login() 一次,所以该行将是:

const client = deepstream('localhost:6021')

我们正在开发即将发布的 2.0 版本,它将完全删除 tcp,只需要一个端口,以便在部署和性能方面更轻松。