2015-01-21 5 views
1

Hy,Использование peerjs с Adobe InDesign

Я создаю свой собственный InDesign PlugIn, и мне нужно, чтобы подключиться к другой веб-приложения, я создал. Я попытался использовать socket.io, но я не хотел иметь другой сервер, поэтому я перешел на Peer JS, таким образом, у меня есть одноранговая система, которая будет работать отлично, но я встретил некоторые неожиданные проблемы.

Я работаю с Adobe InDesign CC, который использует CEP5, который поддерживает браузер Chrome Chrome BROWSER (CEF (расширенная инфраструктура Chromium)).

В документах сказано, что CEP5 имеет поддержку даже для WebRTC, но когда я пытаюсь подключиться к peerjs (с использованием WebRTC) к другому одноранговому узлу, я получаю: «TypeError: undefined не является функцией», под дальнейшим исследованием I обнаружил, что ошибка была вызвана Object.Negotiator._startPeerConnection, но я не могу понять, что я ошибаюсь ...

Я попытался использовать один и тот же код PEER JS в другом приложении (обычный веб-сайт) и соединение с одним и тому же партнером и было успешным, поэтому я предполагаю, что проблема заключается в поддержке WebRTC, предоставляемой InDesign.

Я не ограничен использованием 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? Или полная трассировка стека? –

+0

ok, если я делаю 'alert (typeof navigator.webkitGetUserMedia)' inmy InDesign PlugIn Я получаю undefinied, если я это делаю в своем тестовом приложении на хроме, я получаю объект функции. –

+0

Можете ли вы сделать то же самое с navigator.getUserMedia? Если это также не определено, то нет поддержки WebRTC. Может быть, это должно быть явно включено, если включить флаг InDesign? –

ответ

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 клиент может писать сообщения на сервер в довольно простой способ.

Надеюсь, это поможет кому-то в будущем.

Смежные вопросы