Support Firefox (#13)
* Support firefox
diff --git a/.travis.yml b/.travis.yml
index 3756641..e0371f6 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,16 +1,7 @@
language: dart
-# This is necessary to use proper Chrome. Travis's version of chromium is from
-# 2014.
sudo: required
-dist: trusty
addons:
chrome: stable
- apt:
- sources:
- - google-chrome
- packages:
- - google-chrome-stable
- firefox: latest
dart:
- dev
@@ -19,18 +10,14 @@
with_content_shell: false
before_install:
- - export CHROMEDRIVER_BINARY=/usr/bin/google-chrome
- - export CHROMEDRIVER_ARGS=--no-sandbox
- - /usr/bin/google-chrome --version
- - export DISPLAY=:99.0
- - sh -e /etc/init.d/xvfb start
-
-before_script:
+ - "export CHROMEDRIVER_BINARY=/usr/bin/google-chrome"
+ - "export CHROMEDRIVER_ARGS=--no-sandbox"
+ - "/usr/bin/google-chrome --version"
- "export CHROME_LATEST_VERSION=$(/usr/bin/google-chrome --version | cut -d' ' -f3 | cut -d'.' -f1)"
- "export CHROME_DRIVER_VERSION=$(wget -qO- https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$CHROME_LATEST_VERSION)"
- "wget https://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip"
- unzip chromedriver_linux64.zip
- - export PATH=$PATH:$PWD
+ - "export PATH=$PATH:$PWD"
- ./tool/travis-setup.sh
script:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8246f13..a1921db 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.1.0
+
+- Support Firefox.
+
## 2.0.3
- Fix an issue where messages could come out of order.
diff --git a/lib/server/sse_handler.dart b/lib/server/sse_handler.dart
index a3067f6..83017ff 100644
--- a/lib/server/sse_handler.dart
+++ b/lib/server/sse_handler.dart
@@ -12,12 +12,12 @@
import 'package:stream_channel/stream_channel.dart';
String _sseHeaders(String origin) => 'HTTP/1.1 200 OK\r\n'
- 'Content-Type: text/event-stream\r\n'
- 'Cache-Control: no-cache\r\n'
- 'Connection: keep-alive\r\n'
- 'Access-Control-Allow-Credentials: true\r\n'
- 'Access-Control-Allow-Origin: $origin\r\n'
- '\r\n';
+ 'Content-Type: text/event-stream\n\n'
+ 'Cache-Control: no-cache\n\n'
+ 'Connection: keep-alive\n\n'
+ 'Access-Control-Allow-Credentials: true\n\n'
+ 'Access-Control-Allow-Origin: $origin\n\n'
+ '\n\n';
/// A bi-directional SSE connection between server and browser.
class SseConnection extends StreamChannelMixin<String> {
@@ -140,7 +140,12 @@
}
return shelf.Response.ok('', headers: {
'access-control-allow-credentials': 'true',
- 'access-control-allow-origin': req.headers['origin']
+ 'access-control-allow-origin': _originFor(req),
});
}
+
+ String _originFor(shelf.Request req) =>
+ // Firefox does not set header "origin".
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=1508661
+ req.headers['origin'] ?? req.headers['host'];
}
diff --git a/pubspec.yaml b/pubspec.yaml
index 649ffc2..e2631cc 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
name: sse
-version: 2.0.3
+version: 2.1.0
author: Dart Team <misc@dartlang.org>
homepage: https://github.com/dart-lang/sse
description: >-