attach method
Attaches socket.io to a server or port.
@param {http.Server|Number} server or port @param {Object} options passed to engine.io @return {Server} self @api public
Implementation
Future<Server> attach(dynamic srv, [Map? opts]) async {
if (srv is Function) {
var msg = 'You are trying to attach socket.io to an express '
'request handler function. Please pass a http.Server instance.';
throw Exception(msg);
}
// handle a port as a string
if (srv is String && int.parse(srv.toString()).toString() == srv) {
srv = int.parse(srv.toString());
}
opts ??= {};
// set engine.io path to `/socket.io`
if (!opts.containsKey('path')) {
opts['path'] = path();
}
// set origins verification
opts['allowRequest'] = checkRequest;
if (srv is num) {
_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();
//// });
var completer = Completer();
var connectPacket = {'type': CONNECT, 'nsp': '/'};
encoder.encode(connectPacket, (encodedPacket) {
// the CONNECT packet will be merged with Engine.IO handshake,
// to reduce the number of round trips
opts!['initialPacket'] = encodedPacket;
_logger.fine('creating engine.io instance with opts $opts');
// initialize engine
engine = Engine.attach(server, opts);
// attach static file serving
// if (self._serveClient) self.attachServe(srv);
// Export http server
httpServer = server;
// bind to engine events
bind(engine!);
completer.complete();
});
await completer.future;
// });
} else {
var connectPacket = {'type': CONNECT, 'nsp': '/'};
encoder.encode(connectPacket, (encodedPacket) {
// the CONNECT packet will be merged with Engine.IO handshake,
// to reduce the number of round trips
opts!['initialPacket'] = encodedPacket;
_logger.fine('creating engine.io instance with opts $opts');
// initialize engine
engine = Engine.attach(srv, opts);
// attach static file serving
// if (self._serveClient) self.attachServe(srv);
// Export http server
httpServer = srv;
// bind to engine events
bind(engine!);
});
}
return this;
}