首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Evothing和ddp

Evothing和ddp
EN

Stack Overflow用户
提问于 2016-05-13 04:09:11
回答 2查看 124关注 0票数 0

我们正在尝试将我们的evothings应用程序连接到meteor服务器。

为此,我们使用了一个名为asteroid的库。但是,我们无法连接和运行方法。我们绝对确定这不是服务器的问题,因为我们有一些单独的客户端代码用于测试,可以完美地与它一起工作。

Evothing说它应该与websockets一起工作,我们没有得到任何错误输出,但我们所有的方法调用都没有返回任何结果。

代码如下:

代码语言:javascript
复制
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');
    }
}
EN

回答 2

Stack Overflow用户

发布于 2016-05-14 02:23:05

据我所知,require()函数只能在node.js中工作,不能在Evothings或Cordova等浏览器环境中工作,因此您需要一些加载"asteroid“库的替代方法。Browserify?

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

代码语言:javascript
复制
<script>
    // Redirect console.log to Evothings Workbench.
    if (window.hyper && window.hyper.log) { console.log = hyper.log }
</script>

也许这个错误并不是Evothing环境所独有的。你有没有在普通的网络浏览器上测试过这个应用?

票数 0
EN

Stack Overflow用户

发布于 2016-05-17 14:47:25

您是否使用了适当的证书?

自签名将不起作用。Evothing应用程序通过wss提供服务,由于它运行的是所谓的“无头”(而不是普通的浏览器),它不能询问用户是否允许自签名证书,因此它将失败。请注意,AFAIK证书的任何问题都将使其失败。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37196506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档