繁体   English   中英

Socket.emit不适用于Ionic

[英]Socket.emit doesn't work with Ionic

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

  • 使用ionic run ios --target="iPhone-6-Plus"在iOS模拟器中运行应用程序时,套接字连接将无法正常工作

  • 使用ionic serve在浏览器中为应用程序提供服务时,套接字连接有效。

我的密码

我的应用程序客户端中有一个套接字服务,该服务连接到套接字服务器:

.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,它是:

客户端中定义的Socket.emit

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

我弄清楚了问题所在。 当使用ionic / cordova连接到套接字服务器时,必须在服务器URL前面加上http:// 该应用程序仍可在浏览器中运行的原因是,浏览器将自动添加前缀。

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

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

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

  return mySocket;

})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM