|
@@ -0,0 +1,73 @@
|
|
|
+angular.module('tabooServices', [])
|
|
|
+.factory('connectionService', function($rootScope) {
|
|
|
+ var WS = window['MozWebSocket'] ? MozWebSocket : WebSocket;
|
|
|
+ var chatSocket = null;
|
|
|
+
|
|
|
+ var service = {
|
|
|
+ username: '',
|
|
|
+ messages: [],
|
|
|
+ members: [],
|
|
|
+ error: null,
|
|
|
+ isConnected: function() {
|
|
|
+ return this.username != '';
|
|
|
+ },
|
|
|
+ };
|
|
|
+
|
|
|
+ service.connect = function(username) {
|
|
|
+ chatSocket = new WS(jsRoutes.controllers.Application.chat(username).webSocketURL());
|
|
|
+ chatSocket.onmessage = onEvent;
|
|
|
+ service.username = username;
|
|
|
+ }
|
|
|
+
|
|
|
+ service.disconnect = function() {
|
|
|
+ service.username = '';
|
|
|
+ service.messages = [];
|
|
|
+ service.members = [];
|
|
|
+ chatSocket.close();
|
|
|
+ chatSocket = null;
|
|
|
+ }
|
|
|
+
|
|
|
+ service.send = function(message) {
|
|
|
+ chatSocket.send(JSON.stringify({text: message}));
|
|
|
+ }
|
|
|
+
|
|
|
+ function onEvent(event) {
|
|
|
+ var message = JSON.parse(event.data);
|
|
|
+ if(message.error) {
|
|
|
+ service.error = message;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ service.messages.push(message);
|
|
|
+ service.members = message.members;
|
|
|
+ }
|
|
|
+ $rootScope.$apply();
|
|
|
+ }
|
|
|
+
|
|
|
+ return service;
|
|
|
+});
|
|
|
+
|
|
|
+angular.module('taboo', ['tabooServices']);
|
|
|
+
|
|
|
+function partial(template) {
|
|
|
+ return jsRoutes.controllers.Assets.at('partials/'+template+'.html').url;
|
|
|
+}
|
|
|
+
|
|
|
+function ViewCtrl($scope) {
|
|
|
+ $scope.partial = partial;
|
|
|
+}
|
|
|
+
|
|
|
+function LoginCtrl($scope, connectionService) {
|
|
|
+ $scope.service = connectionService;
|
|
|
+}
|
|
|
+
|
|
|
+function ChatCtrl($scope, connectionService) {
|
|
|
+ $scope.service = connectionService;
|
|
|
+
|
|
|
+ $scope.onType = function(event) {
|
|
|
+ if(event.keyCode == 13) {
|
|
|
+ connectionService.send($scope.text);
|
|
|
+ $scope.text = '';
|
|
|
+ event.originalEvent.preventDefault();
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|