【发布时间】:2014-04-09 06:10:27
【问题描述】:
当我将安全选项设置为 true 时,我在订阅我的 websocket 服务器时遇到问题。我运行了一个 SSL 验证器以确保它设置正确并且一切都通过了。另外为了安全起见,我还与我的托管服务提供商进行了核对,所以我认为这不是问题所在。此外,当安全设置为 false 时,一切正常。
WSS 在端口 8676 上运行,我确实确保该端口已打开。
我正在使用 Stomp Javascript 库。我从他们的 github master 分支 (https://github.com/projectodd/stilts/blob/master/stomp-client-js/src/main/javascript/stomp.js) 下载了最新版本。
我在_transmit() 函数中不断收到此错误:can't call transmit on undefined
似乎没有在_buildConnector() 函数内设置_transport 属性。我添加了一些console.logs,它总是转到此函数中的else 语句。
关于修复的任何想法?还是我只是错过了什么?
这就是我初始化连接的方式:
client = new Stomp.Client('my.ip.address', 8676, true);
这里是我记录一些函数的地方:
Stomp.Client = function(host, port, secure) {
console.log('host param: ' + host);
console.log('port param: ' + port);
console.log('secure param: ' + secure);
this._host = host || Stomp.DEFAULT_HOST;
this._port = port || Stomp.DEFAULT_PORT || 8675;
this._secure = secure || Stomp.DEFAULT_SECURE_FLAG || false;
console.log('this._host: ' + this._host);
console.log('this._port: ' + this._port);
console.log('this._secure: ' + this._secure);
}
输出:
host param: my.ip.address
port param: 8676
secure param: true
this._host: my.ip.address
this._port: 8676
this._secure: true
_buildConnector: function(transports, i) {
console.log('INSIDE _buildConnector()');
var callback = this._connectCallback;
var client = this;
if ( i < transports.length ) {
console.log('IF!!!');
return function() {
var fallback = client._buildConnector( transports, i+1, callback );
try {
console.log('_buildConnector::IF::TRY');
transports[i].connect( function() {
client._transport = transports[i];
callback();
}, fallback );
} catch (err) {
console.log('_buildConnector::IF::CATCH');
fallback();
}
};
} else {
console.log('_buildConnector::ELSE');
return client.connectionFailed.bind(this);
}
}
输出:
INSIDE _buildConnector()
IF!!!
INSIDE _buildConnector()
IF!!!
_buildConnector::IF::TRY
INSIDE _buildConnector()
_buildConnector::ELSE
_buildConnector::IF::TRY
connectionFailed: function() {
console.log('INSIDE connectionFailed()');
if (this._errorCallback)
{
console.log('connectionFailed::IF');
console.log('this._errorCallback');
console.log(this._errorCallback);
console.log('arguments');
console.log(arguments);
this._errorCallback.apply(this._errorCallback, arguments);
}
else
{
console.log('connectionFailed::ELSE');
console.log('unable to connect :(');
Stomp.logger.log( "unable to connect" );
}
}
输出:
No output..
【问题讨论】:
-
还需要注意的是,Web 应用服务器和 Websocket 服务器位于 2 台不同的机器上。不确定这是否是问题的一部分。
-
我尝试将 websocket 服务器移动到与 web 应用程序相同的机器上,仍然没有成功
标签: javascript security ssl stomp torquebox