Socket.emit不适用于Ionic

时间:2015-04-23 23:38:46

标签: javascript angularjs cordova sockets ionic-framework

我正在尝试在我的离子应用程序和我已构建的套接字服务器之间创建套接字连接。

  • 使用ionic run ios --target="iPhone-6-Plus"

  • 在iOS模拟器中运行应用时,套接字连接无法正常工作
  • 使用ionic serve在浏览器中投放应用时套接字连接有效。

我的代码

我的app客户端中有一个套接字服务连接到我的套接字服务器:

.factory('Sockets', function($http, socketFactory){

  var myIoSocket = io.connect('localhost:5000');

  var mySocket = socketFactory({
    ioSocket: myIoSocket
  });

  return mySocket;

})

以下是我的客户端套接字请求:

angular.module('crewapp.chat', [])
.controller('ChatController', function($scope, Auth, Sockets, $localStorage){
  $scope.test = 'Chats';
  Sockets.emit('join room', $localStorage.groupname)

});

这是我的套接字服务器(简称)

io.sockets.on('connection', function(socket) {
  socket.on('join room', function(room) {
    socket.room = room;
    socket.join(room);
    console.log(room);
});

我尝试过的事情

  1. 我试过看看应用程序中是否定义了Socket.emit:
  2. Socket.emit defined in client

    1. 我通过在socket.on('connection')回调函数体中放置console.log来概括套接字服务器应该记录的位置。

1 个答案:

答案 0 :(得分:0)

我弄清楚问题是什么。在ionic / cordova中连接到套接字服务器时,必须在服务器URL前加http://。应用程序仍然可以在浏览器中运行的原因是因为浏览器会自动添加前缀。

.factory('Sockets', function($http, socketFactory){

  var myIoSocket = io.connect('http://localhost:5000');

  var mySocket = socketFactory({
    ioSocket: myIoSocket
  });

  return mySocket;

})