在 Adob​​e InDesign 中使用 peerjs

Using peerjs with Adobe InDesign

嗨,

我正在创建自己的 InDesign 插件,我需要连接到我创建的另一个 Web 应用程序。我尝试使用socket.io,但我不想有另一个服务器,所以我已经传递给Peer JS,这样我就有了一个可以完美运行的点对点系统,但我遇到了一些意想不到的问题。

我正在使用 Adob​​e InDesign CC,它使用 CEP5,它支持 google chrome BROWSER(CEF(Chromium 扩展框架))。

在文档中说 CEP5 甚至支持 WebRTC,但是当我尝试将 peerjs(使用 WebRTC)连接到另一个对等点时,我得到一个:"TypeError: undefined is not a function",在进一步调查中我发现Object.Negotiator._startPeerConnection 抛出错误,但我无法理解我的错误...

我尝试在另一个应用程序(只是一个普通网站)中使用相同的 PEER JS 代码并连接到同一个对等点并成功,所以我猜测问题出在 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!');
});

感谢您的帮助...。 . .

嗯, 我找到的唯一解决方案是放弃 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);
});

服务器可以接收来自客户端的消息,客户端可以非常简单地向服务器写入消息。

希望这对以后的人有所帮助。