PatrickJS/angular-websocket is tracked by TopGit as a frontend project, with 1.2k stars on GitHub, written primarily in JavaScript. :arrow_upper_left: The missing Angular WebSocket module for connecting client applications to servers by @AngularClass
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
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.
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:
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
Slack: AngularClass
Gitter: angularclass/angular-websocket
Twitter: @AngularClass
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
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]
How does PatrickJS/angular-websocket compare to other Frontend projects?
PatrickJS/angular-websocket is tracked by TopGit in the Frontend category, with 1.2k GitHub stars and written in JavaScript. Browse the Frontend topic page on TopGit to compare it against similar projects by stars and activity.
How many stars does PatrickJS/angular-websocket have?
PatrickJS/angular-websocket has 1.2k GitHub stars — refresh the page for the live number, or check github.com/PatrickJS/angular-websocket. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
Is PatrickJS/angular-websocket open source?
Yes — PatrickJS/angular-websocket ships under the MIT license, which makes its source code freely readable (and, depending on license terms, forkable and reusable). Source: github.com/PatrickJS/angular-websocket.
What else is in the Frontend space?
PatrickJS/angular-websocket is tracked by TopGit under the Frontend category, alongside 6 GitHub-tagged topics. Trending and Topics pages list peer repositories of comparable stars and language.
What is PatrickJS/angular-websocket?
PatrickJS/angular-websocket (PatrickJS/angular-websocket) is a JavaScript project on GitHub. From the project's own README: :arrow_upper_left: The missing Angular WebSocket module for connecting client applications to servers by @AngularClass
Where can I see PatrickJS/angular-websocket in action?
The project maintains a homepage at https://angularclass.github.io/angular-websocket. The README tab on this page also usually contains screenshots and a quickstart.
Where do I read more about PatrickJS/angular-websocket?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/PatrickJS/angular-websocket is the definitive source.
Read full README in the tab above.
Curious whether angular-websocket is right for you?
Let ChatGPT, Claude, or Perplexity look into it — click below and see what AI actually says about angular-websocket.