1.0.4
This commit is contained in:
parent
e42528ef42
commit
019989e3b1
7 changed files with 26 additions and 16 deletions
|
@ -1,5 +1,5 @@
|
||||||
# angel_websocket
|
# angel_websocket
|
||||||
[![1.0.3](https://img.shields.io/badge/pub-1.0.3-brightgreen.svg)](https://pub.dartlang.org/packages/angel_websocket)
|
[![1.0.4](https://img.shields.io/badge/pub-1.0.4-brightgreen.svg)](https://pub.dartlang.org/packages/angel_websocket)
|
||||||
[![build status](https://travis-ci.org/angel-dart/websocket.svg)](https://travis-ci.org/angel-dart/websocket)
|
[![build status](https://travis-ci.org/angel-dart/websocket.svg)](https://travis-ci.org/angel-dart/websocket)
|
||||||
|
|
||||||
WebSocket plugin for Angel.
|
WebSocket plugin for Angel.
|
||||||
|
@ -29,11 +29,11 @@ main() async {
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Filtering events is easy with services. Just return a `bool`, whether
|
Filtering events is easy with hooked services. Just return a `bool`, whether
|
||||||
synchronously or asynchronously.
|
synchronously or asynchronously.
|
||||||
|
|
||||||
```dart
|
```dart
|
||||||
myService.properties['ws:filter'] = (WebSocketContext socket) async {
|
myService.properties['ws:filter'] = (HookedServiceEvent e, WebSocketContext socket) async {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
|
@ -55,7 +55,7 @@ class WebSockets extends BaseWebSocketClient {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<WebSocketChannel> getConnectedWebSocket() {
|
Future<WebSocketChannel> getConnectedWebSocket() {
|
||||||
var socket = new WebSocket(basePath);
|
var socket = new WebSocket(authToken?.isNotEmpty == true ? basePath : '$basePath?token=$authToken');
|
||||||
var completer = new Completer<WebSocketChannel>();
|
var completer = new Completer<WebSocketChannel>();
|
||||||
|
|
||||||
socket
|
socket
|
||||||
|
|
8
lib/hooks.dart
Normal file
8
lib/hooks.dart
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
import 'package:angel_framework/angel_framework.dart';
|
||||||
|
|
||||||
|
/// Prevents a WebSocket event from being broadcasted, to any client.
|
||||||
|
HookedServiceEventListener doNotBroadcast() {
|
||||||
|
return (HookedServiceEvent e) {
|
||||||
|
if (e.params != null) e.params['broadcast'] = false;
|
||||||
|
};
|
||||||
|
}
|
|
@ -38,7 +38,10 @@ class WebSockets extends BaseWebSocketClient {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<WebSocketChannel> getConnectedWebSocket() async {
|
Future<WebSocketChannel> getConnectedWebSocket() async {
|
||||||
var socket = await WebSocket.connect(basePath);
|
var socket = await WebSocket.connect(basePath,
|
||||||
|
headers: authToken?.isNotEmpty == true
|
||||||
|
? {'Authorization': 'Bearer $authToken'}
|
||||||
|
: {});
|
||||||
return new IOWebSocketChannel(socket);
|
return new IOWebSocketChannel(socket);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,7 @@ class AngelWebSocket extends AngelPlugin {
|
||||||
|
|
||||||
_filter(WebSocketContext socket) {
|
_filter(WebSocketContext socket) {
|
||||||
if (e.service.properties.containsKey('ws:filter'))
|
if (e.service.properties.containsKey('ws:filter'))
|
||||||
return e.service.properties['ws:filter'](socket);
|
return e.service.properties['ws:filter'](e, socket);
|
||||||
else
|
else
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -230,14 +230,7 @@ class AngelWebSocket extends AngelPlugin {
|
||||||
/// Hooks a service up to have its events broadcasted.
|
/// Hooks a service up to have its events broadcasted.
|
||||||
hookupService(Pattern _path, HookedService service) {
|
hookupService(Pattern _path, HookedService service) {
|
||||||
String path = _path.toString();
|
String path = _path.toString();
|
||||||
var batch = serviceHook(path);
|
service.afterAll(serviceHook(path));
|
||||||
|
|
||||||
service
|
|
||||||
..afterCreated.listen(batch)
|
|
||||||
..afterModified.listen(batch)
|
|
||||||
..afterUpdated.listen(batch)
|
|
||||||
..afterRemoved.listen(batch);
|
|
||||||
|
|
||||||
_servicesAlreadyWired.add(path);
|
_servicesAlreadyWired.add(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ name: angel_websocket
|
||||||
description: WebSocket plugin for Angel.
|
description: WebSocket plugin for Angel.
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=1.19.0"
|
sdk: ">=1.19.0"
|
||||||
version: 1.0.3
|
version: 1.0.4
|
||||||
author: Tobe O <thosakwe@gmail.com>
|
author: Tobe O <thosakwe@gmail.com>
|
||||||
homepage: https://github.com/angel-dart/angel_websocket
|
homepage: https://github.com/angel-dart/angel_websocket
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import 'package:angel_framework/angel_framework.dart';
|
import 'package:angel_framework/angel_framework.dart';
|
||||||
import 'package:angel_framework/common.dart';
|
import 'package:angel_framework/common.dart';
|
||||||
import 'package:angel_websocket/base_websocket_client.dart';
|
import 'package:angel_websocket/base_websocket_client.dart';
|
||||||
|
import 'package:angel_websocket/server.dart';
|
||||||
import 'package:test/test.dart';
|
import 'package:test/test.dart';
|
||||||
|
|
||||||
class Todo extends Model {
|
class Todo extends Model {
|
||||||
|
@ -11,7 +12,12 @@ class Todo extends Model {
|
||||||
}
|
}
|
||||||
|
|
||||||
class TodoService extends TypedService<Todo> {
|
class TodoService extends TypedService<Todo> {
|
||||||
TodoService() : super(new MapService());
|
TodoService() : super(new MapService()) {
|
||||||
|
properties['ws:filter'] = (HookedServiceEvent e, WebSocketContext socket) {
|
||||||
|
print('Hello, service filter world!');
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
testIndex(BaseWebSocketClient client) async {
|
testIndex(BaseWebSocketClient client) async {
|
||||||
|
|
Loading…
Reference in a new issue