2015-01-21 52 views
1

Hy,在Adobe InDesign中使用peerjs

我創建了自己的InDesign插件,並且需要連接到我創建的另一個Web應用程序。我嘗試過使用socket.io,但我不想擁有另一臺服務器,所以我已經傳給了Peer JS,通過這種方式,我有一個可以完美工作的點對點系統,但遇到了一些意想不到的問題。

我正在使用Adobe InDesign CC,它使用CEP5,它支持谷歌瀏覽器BROWSER(CEF(Chromium extended framework))。

在Docs中,據說CEP5甚至支持WebRTC,但是當我嘗試與peerjs(使用WebRTC)連接到另一個peer時,我得到:「TypeError:undefined不是函數」,在進一步調查中發現這個錯誤是由Object.Negotiator._startPeerConnection引發的,但我不明白我在弄錯什麼......

我試過在另一個應用程序中使用相同的PEER JS代碼(只是一個普通的網站)並連接到同一個peer並且成功了,所以我猜測問題在於InDesign提供的WebRTC支持。

我不僅僅限於使用PEER JS,我只是希望我的Adobe插件和我的網站以最智能的方式進行通信,因此任何想法都是值得歡迎的,但這是我插件的代碼片段連接到PEERJS

var peer = new Peer({key: mySecretKey}); 
var conn = peer.connect('editor-vaComeVibraEEE');//the exception is  generated here 
conn.on('open', function(){ 
    conn.send('hi!'); 
}); 

感謝您的幫助......。 。 。

+0

你能驗證navigator.webkitGetUserMedia和webkitRTCPeerConnection存在嗎?你還可以分享peerjs日誌嗎?還是完整的堆棧跟蹤? – 2015-01-21 11:18:57

+0

好的,如果我做了一個alert(typeof navigator.webkitGetUserMedia)'inmy InDesign PlugIn我得到undefinied,如果我在我的測試應用程序中使用chrome,我得到一個函數對象。 – 2015-01-21 11:23:56

+0

你可以用navigator.getUserMedia做同樣的事嗎?如果它也未定義,那麼就沒有WebRTC支持。也許它應該通過切換一些InDesign標誌顯式啓用? – 2015-01-21 11:28:30

回答

2

那麼, 我發現的唯一解決方案是放棄peerJS並遷移到faye,這是一個基於Bayeux協議的發佈 - 訂閱消息傳遞系統。我認爲這是一個很好的解決方案,並且易於實施。這是我的服務器代碼

var http = require('http'), 
    faye = require('faye'); 

var server = http.createServer(); 
bayeux = new faye.NodeAdapter({mount: '/'}); 

bayeux.attach(server); 
server.listen(8000); 
bayeux.getClient().publish('/inDesign', { 
    text: val 
}); 

,並在客戶端我收到像這樣的信息:

var client = new Faye.Client('http://localhost:8000/'); 

client.subscribe('/inDesign', function(message) { 
    alert('Got a message: ' + message.text); 
}); 

服務器可以從客戶端接收郵件和TEH客戶端可以在相當寫郵件服務器一個簡單的方法。

希望這將有助於未來的人。

相關問題