2012-09-10 68 views

回答

5

我推薦的解決方案是使用JS中的Channel API打開套接字並通過postMessage或自定義事件轉發所有消息,並在Dart中接收它們。

我不確定是否有任何通用解決方案已經開源,但它應該是相當微不足道的,並且不需要一般的JS-interop工作。

編輯:澄清

編輯2:

FYI:我剛剛出版了一庫做的正是這一點。我希望這個對你有用!

http://code.google.com/p/gae-channel-api-dart/

3

從鏢隊一個傢伙移植客戶端庫,飛鏢:http://code.google.com/p/gae-channel-api-dart/

+0

這可能在未來打破。看到我的答案。 –

+0

是的,但考慮到他爲谷歌工作的事實,如果它確實崩潰,依靠他來解決它是有道理的。 –

+0

@PeterKnego,我沒有端口的通道API JS,我把它包起來,所以它不會中斷。至少不是因爲渠道實施的變化。但由於Dart語言和API的變化,它已經被破壞了。我努力跟上這些。 –

3

通道API的JS代碼是專有的,不存在「源」(也有,但好運氣reverse-engineering that)。谷歌是故意這樣做的,以便他們可以更改渠道底層協議,而不會有凌亂的升級/棄用流程。

因此,如果您遵循@ Shannon的建議,重寫的代碼很可能在未來某個時間點停止工作,您將需要重複對Channels JS代碼進行反向工程的過程。

更好的解決方案是從Dart調用Channels API JS代碼,但目前爲Darts support for calling JS is rudimentary,但似乎它們是already started working on improving it