簡體   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