engine-io

A Haskell implementation of Engine.IO

http://github.com/ocharles/engine.io

Version on this page:1.2.10
LTS Haskell 9.21:1.2.17
Stackage Nightly 2017-07-25:1.2.17
Latest on Hackage:1.2.23

See all snapshots engine-io appears in

BSD-3-Clause licensed by Oliver Charles
Maintained by [email protected]
This version can be pinned in stack with:engine-io-1.2.10@sha256:f3494534a6415e5a5fd10a2a3b834d7b68456a3861918074bbd3f36f56460055,1482

Module documentation for 1.2.10

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.

    Thanks to Tim Baumann (@timjb) for this change.

1.0.2

1.0.1

1.0.0

  • Initial release