2017-06-08 43 views
0

我的编译器返回错误,说我应该在实例化一个新客户端时传入一个密钥,它说我在实例化一个客户端时应该传入一个密钥。我遇到了实例化新客户端的问题,我如何实例化新客户端?

我还收到一个错误消息,说明未定义$ token。

请仔细阅读下面的代码

var stream = require('getstream'); 
// Instantiate a new client (server side) 
client = stream.connect('q3nwu4pbz222', '(secret)', '25553'); 
// Instantiate a new client (client side) 
client = stream.connect('q3nwu4pbz222', null, '25553'); 
// Find your API keys here https://getstream.io/dashboard/ 

// Instantiate a feed using feed class 'user' and user id '1' 
var user1 = client.feed('user', '1', token); 

// Instantiate a feed for feed group 'user', user id '1' and a security token generated server side 
user1 = client.feed('user', '1', $token); 
+0

我编辑了您的问题以删除您的API密钥。您可能想为您的应用程序生成新的API凭据。这些凭据应该像用户名/密码一样被保护。 – iandouglas

回答

0

JavaScript不使用$前缀的变量,但上面已经给示例代码还没有建一个名为任何形式的token变量。

有两个客户端连接,您可以用流JS库做:

一个发生在服务器上运行的应用程序的Node.js和一个你会通过你的API密钥和API的秘密。这给你一个流读取连接读取饲料,但也写活动,执行关系,并删除/更新活动和取消关注其他饲料等

其他客户端会发生在浏览器(其中你的API秘密是null),但需要由后端/服务器应用程序生成的令牌,并允许只读连接通过websockets流式传输以进行实时通知。您的帐户限制您的浏览器客户端可以对Stream进行多少活动WebSocket连接。

至于生成令牌的WebSocket连接,你会在服务器端使用这样的代码:

backendClient = stream.connect(<API_KEY>, <API_SECRET>, <APP_ID>) 
readonlyToken = backendClient.feed('user', '1').getReadOnlyToken(); 

这会产生一个只读令牌成为user:1饲料,但不能执行写入功能例如添加/编辑/更新活动数据或关注/取消关注等。

然后,无论您喜欢,您都可以获得该令牌给您的前端浏览器/客户端。然后,从那里,前端客户端将使用这样的代码连接到Stream:

browserClient = stream.connect('q3nwu4pbz222', null, '25553'); 
user1 = browserClient.feed('user', '1', readonlyToken); 
user1.get({limit:5}, callbackWhenFinished); 
+0

这是否实时发生?如果不是我怎样才能让浏览器客户端实时读取? –

+0

如果你有一个从浏览器到Stream的websocket连接,使用适当的只读令牌,那么是的,除了互联网延迟和我们的数据库处理获得一个活动并将其写入一个你的websocket将查询的feed新数据。我们的免费计划具有较低的优先处理时间,因此可能比我们的企业计划花费的时间更长。 – iandouglas

相关问题