angular集成websocket_angular-websocket

An Angular WebSocket service for connecting client applications to servers.

3b902c0a1e75f0aa5366851350b312f5.png

Angular Websocket slack-join-brightgreen.svgJoin%20Chat.svgangular-websocket.png

angular-websocket.svg?style=flat

angular-websocket.svg?style=flat

angular-websocket.svg?style=flat

angular-websocket.svg

dev-status.svg

85987625cd71788720892556947857d7.png

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

CDN for development https://rawgit.com/gdi2290/angular-websocket/v1.0.9/angular-websocket.js

CDN for production https://cdn.rawgit.com/gdi2290/angular-websocket/v1.0.9/angular-websocket.min.js

Usage

  • {{ data }}

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;

});

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

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

Learn AngularJS, Angular 2, and Modern Web Development form the best.

Looking for corporate Angular training, want to host us, or Angular consulting? patrick@angularclass.com

License

HomePage

Repository

https@github.com:angular-class/angular-websocket

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值