2016-07-07 74 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

我的代碼和你的必須相同的邏輯。 –

相關問題