Evothings和ddp

时间:2016-05-12 20:09:11

标签: meteor ddp

我们正在尝试将我们的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');
    }
}

2 个答案:

答案 0 :(得分:0)

据我所知,require()函数仅适用于node.js,而不适用于Evothings Viewer或Cordova等浏览器环境,因此您需要一些其他方法来加载&#34;小行星& #34;库。 Browserify?

您是如何查找错误输出的? Evothings工具窗口?如果是这样,您是否将此代码段添加到index.html文件中?

lastApplied

也许这个错误并不是Evothings环境所独有的。您是否在常规网络浏览器中测试过应用程序?

答案 1 :(得分:0)

您使用的是正确的证书吗?

自签名不起作用。 Evothings应用程序通过wss服务,因为它运行&#34;无头&#34;可以这么说(不是普通的浏览器)它不能要求用户允许自签名证书,因此它将失败。请注意,证书的AFAIK ANY 问题会使其失败。