2017-06-08 36 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

相關問題