【问题标题】:Ionic/Angular and Socket.IO - Show popup upon Socket.IO event receivedIonic/Angular 和 Socket.IO - 收到 Socket.IO 事件时显示弹出窗口
【发布时间】:2015-08-24 01:06:41
【问题描述】:

我正在尝试使用 Ionic Framework (AngularJS) 和 Socket.IO 构建一个实时移动应用程序。

来自 jQuery 背景,我对整个 Ionic/Angular 应用程序设计和结构(例如,控制器、服务等)有点陌生。所以我想知道,我的应用程序应该如何构建,或者构建应用程序的最佳/理想方式是什么?

更具体地说,在 Ionic/Angular 结构的应用程序中,我常用的 Socket.IO 代码应该放在哪里?我见过一个组件 (https://github.com/btford/angular-socket-io),它(据我所知)在 Angular 工厂中封装了 Socket.IO 代码。这是要走的路吗?

我真正想要达到的目标如下:

  1. 收到 Socket.IO 事件时打开一个(离子)弹出窗口并
  2. 在 UI 事件(例如,按钮单击)时发出/发送 Socket.IO 事件/消息。

我的 Ionic/Angular 代码结构应该如何实现这一点?也就是说,哪个代码进入哪个组件/控制器/服务/工厂?

即使是结构的高级描述也可以作为起点。

【问题讨论】:

  • 我之前已经让 socket.io 事件在控制器中工作,但工厂或服务可能更理想
  • @SuperVeetz - 谢谢!如果我将 Socket.IO 代码放在控制器中,它是否仍能实时监听事件,并在收到事件时打开一个弹出窗口?

标签: angularjs socket.io popup ionic


【解决方案1】:

作为一个例子,下面是我使用 ChatCtrl 控制器的方法。

 <!-- app.js -->
 <script>
   angular.module('chatApp', ['ngAnimate'])

   .controller('ChatCtrl', ['$scope', '$http', function($scope, $http) {

     var socket = io.connect();

     // on connect, grab username
     socket.on('connect', function(data) {
       nickname = prompt("What's your name?");
       socket.emit('join', nickname);
     });

     socket.on('statusConnected', function(data) {
       $scope.status = data;
       $scope.$apply($scope.status);
     });

   }]);
 </script>

我的弹出窗口是 JavaScript nickname = prompt("What's your name?"),但您可能会触发 modal 或其他任何您想要的其他弹出窗口,并使用更多 JS

【讨论】:

  • 再次感谢 SuperVeetz。如果可以的话,还有其他问题,这个设置不会有问题吗?即使 Socket.IO 代码在控制器中,套接字是否能够连续成功地监听事件?同一个控制器也可以用于发射事件吗?
  • 老实说,我不是专家,我只是在尝试积累积分并学习/帮助......但这可能取决于您希望从socket.io 代码中获得什么样的可重用性。如果代码将在整个应用程序中使用,那么您可能希望将其放在 service 中,如果它只是应用程序的一小部分,则 directive 可能没问题
  • 我明白了……我的要求更多的是前者。无论如何感谢您的帮助! :)
猜你喜欢
  • 2012-10-10
  • 2014-01-24
  • 1970-01-01
  • 2013-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-01
  • 1970-01-01
相关资源
最近更新 更多