This library provides a Haskell implementation of
Engine.IO, a library for real-time
client-server communication on the web. Engine.IO works with old browsers via
XHR long-polling, and seamlessy upgrades to web sockets. This implementation
supports the majority of the Engine.IO protocol, including text and binary
packets and the upgrading protocol.
Changes
1.2.10
Increase upper-bound of vector to < 0.12.
1.2.9
Same changes as 1.2.8, but the 1.2.8 release was formed incorrectly and didn’t
compile.
1.2.8
Fixed a bug in the heartbeat monitor. The heartbeat thread exists to ensure
that all connections are still active, so we can detect when a long-polling
connection is closed. However, older versions of engine-io, the timer would
be reset whenever we sent the client a message, rather than only when we
received a message from the client. This meant that for high-traffic
applications, old connections might never be removed, resulting in a memory
leak.
1.2.7
Support decoding payloads coming through XHR polling transport.
Previously, this scenario would lead to HTTP 400 responses.
Increased upper bound on either to < 4.5.
1.2.6
Increased upper-bounds of aeson to < 0.10 and of attoparsec to < 0.14.
1.2.5
Increased the upper-bound of base to allow < 4.9. Now builds on
GHC 7.10.1.
1.2.4
Add a 100ms delay in the WebSocket upgrade process. This matches the
behavior of the reference engine.io implementation (in NodeJS), and
avoids a race condition on slower machines. Without this, it was
possible for the client to experience a up-to-45s delay before
upgrading.
1.2.3
Revert double-encoding introduced in 1.0.1. This now requires that you
use a modern version of the socket.io client library. This work was
tested against socket.io-1.2.1.js.
1.2.2
We now use stm-delay to implement a timeout, if we don’t receive
network traffic from the client. Under normal operation, the Socket.io
client should ping the server, so an idle session should remain alive.
1.2.1
Fixed a potential race condition in session allocation, where we could
clobber existing session ids.
1.2.0
ServerAPI’s srvParseParseRequestBody has changed its return type to
Either String a. This allows API providers to catch exceptions that may
happen when attempting to perform this parse.
1.1.2
1.1.1 accidently removed websockets from the list of available upgrades.
This release reverts that change.
1.1.1
Long-polling connections now emit a ping message after 45 seconds, if no
data is written to them.
There is a new dupRawReader function, which lets you create a read-only
stream of raw communication with a socket.
1.1.0
The ServerAPI functions srvWriteBuilder, srvSetContentType and
srvSetResponseCode have been merged into a single function:
srvTerminateWithResponse. This should allow ServerAPI to be provided for
Yesod.