我们正在尝试将我们的evothings应用程序连接到流星服务器。
为此,我们使用名为asteroid的库。但是我们无法连接和运行方法。我们绝对确定这不是服务器问题,因为我们有一些单独的客户端代码用于测试,它可以完美地运行。
Evothings说它应该使用websockets,我们没有得到任何错误输出,但我们所有的方法调用都没有返回任何内容。这是代码:
var _asteroid = require('asteroid');
var Asteroid = (0, _asteroid.createClass)('password-login');
var asteroid = new Asteroid({ endpoint: 'wss://[url]/websocket' });
var currentLogin = null;
$('#login').submit(function(event) {
event.preventDefault();
login($('#login_username').val(), $('#login_password').val());
});
$('#create').submit(function(event) {
event.preventDefault();
newUser($('#create_username').val(), $('#create_password').val(), $('#create_id').val());
});
$('#occupy').click(function(event) {
setStatus(0);
});
$('#vacant').click(function(event) {
setStatus(1);
});
$('#refreash').click(function() {
getEmptyRooms();
});
window.newUser = function (username, password, roomId) {
$('#create_error').text('');
asteroid.call("accounts.newUser", username, password, roomId).then(function (result) {
console.log("Success");
login(username, password);
}).catch(function (error) {
console.log("Error");
console.error(error);
$('#create_error').text(error.message);
});
}
window.login = function (username, password) {
$('#login_error').text('');
asteroid.loginWithPassword({ username: username, password: password }).then(function (result) {
console.log(result);
currentLogin = result;
$('#current').html('Current User: ' + username);
}).catch(function (error) {
console.log("Error");
console.error(error);
$('#login_error').text(error.message);
});;
}
window.getEmptyRooms = function () {
asteroid.call("rooms.getAvailable").then(function (result) {
console.log(result);
$('#room_list').empty();
for(i = 0; i < result.length; i++) {
$('#room_list').append('<li>' + result[i] + '</li>');
}
}).catch(function (error) {
console.log("Error");
console.error(error);
});
}
window.setStatus = function (status) {
$('#status_error').text('');
if (currentLogin != null) {
asteroid.call("rooms.setStatus", status).then(function (result) {
console.log(result);
}).catch(function (error) {
console.log("Error");
console.error(error);
$('#status_error').text(error.message);
});
} else {
console.log('please login first');
$('#status_error').text('please login first');
}
}
答案 0 :(得分:0)
据我所知,require()函数仅适用于node.js,而不适用于Evothings Viewer或Cordova等浏览器环境,因此您需要一些其他方法来加载&#34;小行星& #34;库。 Browserify?
您是如何查找错误输出的? Evothings工具窗口?如果是这样,您是否将此代码段添加到index.html文件中?
lastApplied
也许这个错误并不是Evothings环境所独有的。您是否在常规网络浏览器中测试过应用程序?
答案 1 :(得分:0)
您使用的是正确的证书吗?
自签名不起作用。 Evothings应用程序通过wss服务,因为它运行&#34;无头&#34;可以这么说(不是普通的浏览器)它不能要求用户允许自签名证书,因此它将失败。请注意,证书的AFAIK ANY 问题会使其失败。