diff --git a/lib/src/server.dart b/lib/src/server.dart index ba71551..f1a3ecd 100644 --- a/lib/src/server.dart +++ b/lib/src/server.dart @@ -42,6 +42,7 @@ class Server { Engine? engine; Encoder encoder = Encoder(); Future? _ready; + String? address; /// Server is ready /// @@ -65,7 +66,7 @@ class Server { /// @param {http.Server|Number|Object} http server, port or options /// @param {Object} options /// @api public - Server({server, Map? options}) { + Server({server, Map? options, this.address}) { options ??= {}; path(options.containsKey('path') ? options['path'] : '/socket.io'); serveClient(false != options['serveClient']); @@ -244,15 +245,13 @@ class Server { _logger.fine('creating http server and binding to $srv'); var port = srv.toInt(); var server = StreamServer(); - await server.start(port: port); -// HttpServer.bind(InternetAddress.ANY_IP_V4, port).then(( -// HttpServer server) { -// this.httpServer = server; -//// server.listen((HttpRequest request) { -//// HttpResponse response = request.response; -//// response.statusCode = HttpStatus.NOT_FOUND; -//// response.close(); -//// }); + if(opts.containsKey('securityContext')){ + SecurityContext securityContext = opts['securityContext']; + await server.startSecure(securityContext,port: port, address: address,); + } + else{ + await server.start(port: port, address: address,); + } var completer = Completer(); var connectPacket = {'type': CONNECT, 'nsp': '/'}; diff --git a/test/socket.test.dart b/test/socket.test.dart index bc9b5f1..ccbcd31 100644 --- a/test/socket.test.dart +++ b/test/socket.test.dart @@ -8,6 +8,8 @@ /// 16/02/2017, Created by jumperchen /// /// Copyright (C) 2017 Potix Corporation. All Rights Reserved. +import 'dart:io'; + import 'package:test/test.dart'; import 'package:socket_io/socket_io.dart'; @@ -33,5 +35,44 @@ void main() { }); await io.listen(3000); }); + test('Start standalone server on specific address', () async { + var io = Server(address: '0.0.0.0'); + var nsp = io.of('/some'); + nsp.on('connection', (client) { + print('connection /some'); + client.on('msg', (data) { + print('data from /some => $data'); + client.emit('fromServer', 'ok 2'); + }); + }); + io.on('connection', (client) { + print('connection default namespace'); + client.on('msg', (data) { + print('data from default => $data'); + client.emit('fromServer', 'ok'); + }); + }); + await io.listen(4000); + await io.close(); + }); + test('Start standalone HTTPS server', () async { + var io = Server(); + var nsp = io.of('/some'); + nsp.on('connection', (client) { + print('connection /some'); + client.on('msg', (data) { + print('data from /some => $data'); + client.emit('fromServer', 'ok 2'); + }); + }); + io.on('connection', (client) { + print('connection default namespace'); + client.on('msg', (data) { + print('data from default => $data'); + client.emit('fromServer', 'ok'); + }); + }); + await io.listen(3400,{'securityContext' : SecurityContext.defaultContext}); + }); }); }