Socket.io不会从应用程序发出? (离子)

时间:2016-07-07 14:23:01

标签: node.js ionic-framework websocket socket.io

我使用node.js作为服务器,我的ip是example.com:4000。所以我在服务器端的socket端点应该是example.com:4000。即使我尝试从localhost向example.com:4000发出一些东西,我也设法让它工作。

但是当我有一个应用程序(我使用离子与真实设备)但套接字似乎没有发送出socket.io的发射。我想知道为什么,我试图调试这个问题已经有2天了。

我在服务器端的代码

var server = require("http").Server(express);  
var io = require("socket.io")(server);
server.listen(400);

io.on('connection', function(client) {
  client.on('msg', function(data) {
      console.log(data)
  });
});

客户端

//angular service
.factory('socket',function(socketFactory){

    var myIoSocket = io.connect('http://example.com:4000');

    mySocket = socketFactory({
      ioSocket: myIoSocket
    });

    return mySocket;
});

//within my controller
socket.emit('msg',data);

总结一下,在我尝试使用应用程序的时候,本地主机的功能却有效吗?

1 个答案:

答案 0 :(得分:0)

尝试运行此代码,因为我知道该示例正在运行:

<dependency>
  <groupId>com.github.stefanbirkner</groupId>
  <artifactId>system-rules</artifactId>
  <version>1.16.0</version>
  <scope>test</scope>
</dependency>

控制器

MyApp.factory('socket', function ($rootScope) {
    var socket = io.connect('http://localhost:9000');
    return {
        on: function (eventName, callback) {
            socket.on(eventName, function () {
                var args = arguments;
                $rootScope.$apply(function () {
                    callback.apply(socket, args);
                });
            });
        },
        emit: function (eventName, data, callback) {
            socket.emit(eventName, data, function () {
                var args = arguments;
                $rootScope.$apply(function () {
                    if (callback) {
                        callback.apply(socket, args);
                    }
                });
            })
        }
    };
});

服务器端

MyApp.controller('MainCtrl', function($scope, socket){
    $scope.users = [];
    socket.emit('connection'); });
...