Duct is clone of Socket.IO in Dart which aims to be protocol-level compatible with the original implementation.
First, add the library to the list of dependencies in your pubspec.yaml file:
duct:
git: git://github.com/petrh/duct.git
Then, run pub install
to install the package.
Here is Duct used on server-side with Dart's built-in HTTP server:
#import('package:duct/duct.dart');
main() {
var server = new HttpServer();
var duct = new Duct(server);
server.listen('127.0.0.1', 8080);
duct.sockets.on('connection').then((socket) {
socket.emit('news', { 'hello': 'world' });
socket.on('my other event').then((data) {
print(data);
});
});
}
The corresponding client-side code looks as follows:
#import('package:duct/duct.dart');
void main() {
var socket = Duct.connect('http://localhost');
socket.on('news').then((data) {
print(data);
socket.emit('my other event', { 'my': 'data' });
});
}
Duct is at still at the early stage of development and all contribution are more than welcome. Fork Duct on GitHub, make it awesomer and send a pull request when it is ready.
Please note that one of the Duct's design goals is to use as many Dart idioms as possible while retaining the Socket.IO compatibility.
Duct is licensed under the BSD License.