Wir versuchen, unsere evothings App mit einem Meteorserver zu verbinden.Evothings und ddp
Dazu verwenden wir eine Lib namens asteroid. Wir können jedoch keine Verbindung herstellen und keine Methoden ausführen. Wir sind absolut sicher, dass dies kein Serverproblem ist, da wir einen separaten Client-Code zum Testen haben, der fehlerfrei funktioniert.
Evothings sagt, es sollte mit websockets arbeiten, und wir erhalten keine Fehlerausgabe, aber alle unsere Methodenaufrufe geben nichts zurück. Hier
ist der Code:
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');
}
}
Ja, ich habe tatsächlich browserify verwendet und die Ausgabe für die Evothings App verwendet. Wir wissen, dass es die Anrufe versucht, da jedes ein Trennungs-Ereignis ausgibt, es verbindet sich nie. Ja, wir haben die Log-Ausgabe im Tools-Fenster mit der ganzen Log-Sache. – Shwiby
Wir haben auch einen funktionierenden Client in einem Webbrowser, der den gleichen Code und die browserify-Ausgabe verwendet. – Shwiby