1

嗨,

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

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

在文档中据说CEP5甚至支持WebRTC但是当我尝试将peerjs(使用WebRTC)连接到另一个对等点时,我得到一个:“TypeError:undefined is not a function”,在进一步调查中我发现错误由 Object.Negotiator._startPeerConnection 抛出,但我不明白我错了什么......

我尝试在另一个应用程序(只是一个普通的网站)中使用相同的 PEER JS 代码并连接到同一个对等点并且成功,所以我猜测问题是 InDesign 提供的 WebRTC 支持。

我并不局限于使用 PEER JS,我只希望我的 adobe 插件和我的网站以最智能的方式进行通信,所以欢迎任何想法,但是这是我尝试连接到的插件的一段代码同行JS

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

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

4

1 回答 1

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);
});

服务器可以从客户端接收消息,客户端可以以一种非常简单的方式将消息写入服务器。

希望这将有助于将来的某人。

于 2015-01-22T14:39:10.057 回答