2016-07-07 71 views
0

我使用node.js作为服务器,我的ip是example.com:4000。所以我在服务器端的套接字端点应该是example.com:4000。即使我尝试从localhost向example.com:4000发送某些内容,我也能够使其工作。Socket.io不会从应用程序发出? (离子)

但是当我有一个应用程序(我用真正的设备离子),但套接字似乎没有发送出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); 

总之,事情的来龙去脉在本地主机上,但不是当我尝试上的应用程序?

+0

请发布更多细节,包括你的代码,所以人是一个可以帮助你。欢迎来到StackOverflow! – betseyb

+0

@betseyb完成后,添加了我的代码。 –

+0

和什么是错误? –

回答

0

尝试运行这段代码,因为我知道,例如工作:

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'); }); 
... 

服务器端

"use strict"; 
var express = require('express'); 
var app  = express(); 
var server = require('http').Server(app); 
var io = require('socket.io')(server); 
io.on('connection', function(socket) { 
    console.log('connected!'); 
    socket.on('disconnect', function() { 
    console.log('user disconnected'); 
    }); 
}); 
server.listen(9000, function() { 
    console.log('server up and running at 9000 port'); 
}); 
+0

你在这里想说什么?即使我的代码很好。 –

+0

这只是一个测试,你测试过这个代码吗? –

+0

我的代码和你的必须相同的逻辑。 –

相关问题