All Projects → PatrickJS → Angular Websocket

PatrickJS / Angular Websocket

Licence: mit
↖️ The missing Angular WebSocket module for connecting client applications to servers by @AngularClass

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Angular Websocket

spring-websocket-angular6
Example for using Spring Websocket and Angular with Stomp Messaging
Stars: ✭ 18 (-98.55%)
Mutual labels:  angular2, websockets, angular4
Ngautocomplete
Light-weight autocomplete component for Angular.
Stars: ✭ 52 (-95.81%)
Mutual labels:  angular2, angular4
Ngx Jsonapi
JSON API client library for Angular 5+ 👌 :: Production Ready 🚀
Stars: ✭ 81 (-93.48%)
Mutual labels:  angular2, angular4
Paperadmin
A flat admin dashboard using Angular JS 2/4
Stars: ✭ 80 (-93.56%)
Mutual labels:  angular2, angular4
Angular Tree Component
A simple yet powerful tree component for Angular (>=2)
Stars: ✭ 1,031 (-16.99%)
Mutual labels:  angular2, angular4
Awesome Angular
📄 A curated list of awesome Angular resources
Stars: ✭ 8,160 (+557%)
Mutual labels:  angular2, angular4
Webconsole
Spigot plugin to manage your server remotely using a web interface
Stars: ✭ 62 (-95.01%)
Mutual labels:  websocket, websockets
Angulartics2
Vendor-agnostic analytics for Angular2 applications.
Stars: ✭ 963 (-22.46%)
Mutual labels:  angular2, angular4
Socketcluster Server
Minimal server module for SocketCluster
Stars: ✭ 70 (-94.36%)
Mutual labels:  websocket, websockets
Sec Api
sec.gov EDGAR API | search & filter SEC filings | over 150 form types supported | 10-Q, 10-K, 8, 4, 13, S-11, ... | insider trading
Stars: ✭ 71 (-94.28%)
Mutual labels:  websocket, websockets
Ngx Lazy Load Images
Image lazy load library for Angular 2+
Stars: ✭ 77 (-93.8%)
Mutual labels:  angular2, angular4
Embedio
A tiny, cross-platform, module based web server for .NET
Stars: ✭ 1,007 (-18.92%)
Mutual labels:  websocket, websockets
Mean Angular4 Chat App
MEAN stack with Angular 4 Chat App
Stars: ✭ 41 (-96.7%)
Mutual labels:  websocket, angular4
Django Channels React Multiplayer
turn based strategy game using django channels, redux, and react hooks
Stars: ✭ 52 (-95.81%)
Mutual labels:  websocket, websockets
Angular2 Social Login
Simple client side social authentication for Angular2 application.
Stars: ✭ 34 (-97.26%)
Mutual labels:  angular2, angular4
Channelstream
Channelstream is a websocket communication server for web applications
Stars: ✭ 52 (-95.81%)
Mutual labels:  websocket, websockets
Drip Ionic3
「水滴打卡」App Open Source Code Base On Ionic V3 Framework
Stars: ✭ 74 (-94.04%)
Mutual labels:  angular2, angular4
Nebular
💥 Customizable Angular UI Library based on Eva Design System 🌚✨Dark Mode
Stars: ✭ 7,368 (+493.24%)
Mutual labels:  angular2, angular4
Ngvas
An Angular2/Angular4 library for HTML Canvas.
Stars: ✭ 31 (-97.5%)
Mutual labels:  angular2, angular4
Egeo
EGEO is the open-source UI library used to build Stratio's UI. It includes UI Components, Utilities, Services and much more to build user interfaces quickly and with ease. The library is distributed in AoT mode.
Stars: ✭ 69 (-94.44%)
Mutual labels:  angular2, angular4

Angular Websocket

Angular Websocket Join Slack Join the chat at https://gitter.im/AngularClass/angular-websocket gdi2290/angular-websocket API Documentation

Travis Bower npm Dependency Status devDependency Status NPM

Status: Looking for feedback about new API changes

An AngularJS 1.x WebSocket service for connecting client applications to servers.

How do I add this to my project?

You can download angular-websocket by:

  • (prefered) Using bower and running bower install angular-websocket --save
  • Using npm and running npm install angular-websocket --save
  • Downloading it manually by clicking here to download development unminified version
  • CDN for development https://cdn.rawgit.com/AngularClass/angular-websocket/v2.0.0/dist/angular-websocket.js
  • CDN for production https://cdn.rawgit.com/AngularClass/angular-websocket/v2.0.0/dist/angular-websocket.min.js

Usage

  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
  <script src="bower_components/angular-websocket/angular-websocket.js"></script>
  <section ng-controller="SomeController">
    <ul ng-repeat="data in MyData.collection track by $index" >
      <li> {{ data }} </li>
    </ul>
  </section>
  <script>
    angular.module('YOUR_APP', [
      'ngWebSocket' // you may also use 'angular-websocket' if you prefer
    ])
    //                          WebSocket works as well
    .factory('MyData', function($websocket) {
      // Open a WebSocket connection
      var dataStream = $websocket('ws://website.com/data');

      var collection = [];

      dataStream.onMessage(function(message) {
        collection.push(JSON.parse(message.data));
      });

      var methods = {
        collection: collection,
        get: function() {
          dataStream.send(JSON.stringify({ action: 'get' }));
        }
      };

      return methods;
    })
    .controller('SomeController', function ($scope, MyData) {
      $scope.MyData = MyData;
    });
  </script>

API

Factory: $websocket (in module ngWebSocket)

returns instance of $Websocket

Methods

name arguments description
$websocket
constructor
url:String Creates and opens a WebSocket instance.
var ws = $websocket('ws://foo');
send data:String,Object returns Adds data to a queue, and attempts to send if socket is ready. Accepts string or object, and will stringify objects before sending to socket.
onMessage callback:Function
options{filter:String,RegExp, autoApply:Boolean=true}
Register a callback to be fired on every message received from the websocket, or optionally just when the message's data property matches the filter provided in the options object. Each message handled will safely call $rootScope.$digest() unless autoApply is set to `false in the options. Callback gets called with a MessageEvent object.
onOpen callback:Function Function to be executed each time a socket connection is opened for this instance.
onClose callback:Function Function to be executed each time a socket connection is closed for this instance.
onError callback:Function Function to be executed each time a socket connection has an Error for this instance.
close force:Boolean:optional Close the underlying socket, as long as no data is still being sent from the client. Optionally force close, even if data is still being sent, by passing true as the force parameter. To check if data is being sent, read the value of socket.bufferedAmount.

Properties

name type description
socket window.WebSocket WebSocket instance.
sendQueue Array Queue of send calls to be made on socket when socket is able to receive data. List is populated by calls to the send method, but this array can be spliced if data needs to be manually removed before it's been sent to a socket. Data is removed from the array after it's been sent to the socket.
onOpenCallbacks Array List of callbacks to be executed when the socket is opened, initially or on re-connection after broken connection. Callbacks should be added to this list through the onOpen method.
onMessageCallbacks Array List of callbacks to be executed when a message is received from the socket. Callbacks should be added via the onMessage method.
onErrorCallbacks Array List of callbacks to be executed when an error is received from the socket. Callbacks should be added via the onError method.
onCloseCallbacks Array List of callbacks to be executed when the socket is closed. Callbacks should be added via the onClose method.
readyState Number:readonly Returns either the readyState value from the underlying WebSocket instance, or a proprietary value representing the internal state of the lib, e.g. if the lib is in a state of re-connecting.
initialTimeout Number The initial timeout, should be set at the outer limits of expected response time for the service. For example, if your service responds in 1ms on average but in 10ms for 99% of requests, then set to 10ms.
maxTimeout Number Should be as low as possible to keep your customers happy, but high enough that the system can definitely handle requests from all clients at that sustained rate.

CancelablePromise

This type is returned from the send() instance method of $websocket, inherits from $q.defer().promise.

Methods

name arguments description
cancel Alias to deferred.reject(), allows preventing an unsent message from being sent to socket for any arbitrary reason.
then resolve:Function, reject:Function Resolves when message has been passed to socket, presuming the socket has a readyState of 1. Rejects if the socket is hopelessly disconnected now or in the future (i.e. the library is no longer attempting to reconnect). All messages are immediately rejected when the library has determined that re-establishing a connection is unlikely.

Service: $websocketBackend (in module ngWebSocketMock)

Similar to httpBackend mock in AngularJS's ngMock module. You can use ngWebSocketMock to mock a websocket server in order to test your applications:

    var $websocketBackend;

    beforeEach(angular.mock.module('ngWebSocket', 'ngWebSocketMock');

    beforeEach(inject(function (_$websocketBackend_) {
      $websocketBackend = _$websocketBackend_;

      $websocketBackend.mock();
      $websocketBackend.expectConnect('ws://localhost:8080/api');
      $websocketBackend.expectSend({data: JSON.stringify({test: true})});
    }));

Methods

name arguments description
flush Executes all pending requests
expectConnect url:String Specify the url of an expected WebSocket connection
expectClose Expect "close" to be called on the WebSocket
expectSend msg:String Expectation of send to be called, with required message
verifyNoOutstandingExpectation Makes sure all expectations have been satisfied, should be called in afterEach
verifyNoOutstandingRequest Makes sure no requests are pending, should be called in afterEach

Frequently asked questions

  • Q.: What if the browser doesn't support WebSockets?
  • A.: This module will not help; it does not have a fallback story for browsers that do not support WebSockets. Please check your browser target support here and to include fallback support.

Development

$ npm install
$ bower install

Changelog

Changelog

Unit Tests

$ npm test Run karma in Chrome, Firefox, and Safari

Manual Tests

In the project root directory open index.html in the example folder or browserify example

Distribute

$ npm run dist Builds files with uglifyjs

Support, Questions, or Feedback

Contact us anytime for anything about this repo or Angular 2

TODO

  • Allow JSON if object is sent
  • Allow more control over $digest cycle per WebSocket instance
  • Add Angular interceptors
  • Add .on(event)
  • Include more examples of patterns for realtime Angular apps
  • Allow for optional configuration object in $websocket constructor
  • Add W3C Websocket support
  • Add socket.io support
  • Add SockJS support
  • Add Faye support
  • Add PubNub support

enjoy — AngularClass



AngularClass ##AngularClass

Learn AngularJS, Angular 2, and Modern Web Development form the best. Looking for corporate Angular training, want to host us, or Angular consulting? [email protected]

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].