如何使用socket.io与MEAN堆栈中的AngularJS进行通信

时间:2014-11-11 23:01:24

标签: angularjs node.js socket.io mean-stack

使用MEAN应用程序。前面有角度,工作正常。后面的快递也很好。我需要依靠mongoose来处理MongoDB的东西。

最终,我想在前端使用Angular加载存储在我db的某些列表中的数据。我听说socket.io对这类事情很有用,而且看起来应该很容易使用。

我找到了这个回购,过去几个小时我一直试图让它成功:https://github.com/btford/angular-socket-io

不幸的是,自述文件在完全如何使其工作方面非常稀少,而且这些问题也没有用。

问题:我无法使用socket.emit()socket.on()或socket.io应该执行的任何精彩内容进行通信。在我的终端只是一个悲伤的闪烁光标。

server.js

var port = 8080;
io = require('socket.io');
http = require('http');
server = http.createServer(app);
io = io.listen(server);
server.listen(port);

io.on('connection', function (socket) {
    socket.on('send:garbage',function (data) {
        console.log('omg it finally worked');
    });
});

控制器

angular.module('MyCtrl',[]).controller('MyController',function($scope,mySocket) {

    // triggered by a button press (prints fine to browser console)
    $scope.runTest = function () {
        mySocket.emit('send:garbage', { 'my' : 'data' });
        console.log('what the shit');
    };
}

app.js

angular.module('myApp',[
    ...
    'btford.socket-io',
    ...
]);

疯狂的是,我已经克隆了一些教程,他们的工作就像一个开箱即用的魅力。有关为什么会发生这种情况的任何想法,以及Angular和后端之间是否有更简单的通信方式?


编辑 - 找到BUG!

显然这个repo不适用于socket.io v1.0 +。我从chariot solutions下载了一个使用angular-socket-io的工作教程。它有socket.io v0.9.17,并且工作正常。当我npm update socket.io --save d并更新到v1.2.0时,套接字通信中断了。


编辑2 - 放弃并使用Angular' $http,这很棒

进一步的黑客攻击无处可去,然后我尝试使用Angular的$ http服务来完成同样的事情。而且它非常简单。

Scotch.io有excellent tutorial使用它来设置一个简单的待办事项应用程序。这固定了我的前端到后端的困境。

0 个答案:

没有答案