用Strophe.js修改WebSocket连接

时间:2017-06-09 20:20:45

标签: node.js websocket xmpp strophe bosh

我使用node-xmpp-bosh设置了一个简单的BOSH和WebSocket服务器,如下所示:

const nxb = require("node-xmpp-bosh");
const PORT = process.env.PORT || 5280;

const server_options = {
  port: PORT,
  host: '0.0.0.0',
  path: '/http-bind/',
  logging: 'INFO'
};

const bosh_server = nxb.start_bosh(server_options);
const ws_server = nxb.start_websocket(bosh_server, server_options);

我已将此服务器部署到Heroku,现在我正尝试使用Strophe创建XMPP连接。

var conn = new Strophe.Connection(
  "wss://votebot-web-app-bosh.herokuapp.com/http-bind/",
  {protocol: "wss"}
);

conn.connect(...);

如果我打开浏览器开发工具,我可以通过HTTP状态代码wss://votebot-web-app-bosh.herokuapp.com/http-bind/看到101 Switching Protocols的GET请求,但是没有响应。

确实,Heroku日志显示了这个错误:

[2017-06-09 20:10:17.359] [WARN] [xmpp-proxy-connector.js:Object.stanza:138] - WEBSOCKET d99abd10-683a-485c-a1b8-21f960418523 bosh-stanza - stream not available

我被困在这里,所以我想知道是否有人已经在WebSockets上使用XMPP可以给我任何建议。提前谢谢。

编辑:如果重要,我忘了添加我可以在同一网址(https://votebot-web-app-bosh.herokuapp.com/http-bind/)中成功连接到BOSH服务。

1 个答案:

答案 0 :(得分:0)

如果您的服务器侦听端口process.env.PORT或5280,则客户端必须连接到端口process.env.PORT或端口5280。

    "wss://votebot-web-app-bosh.herokuapp.com/http-bind/",

wss = port 443,除非你指定另一个。