Giter Site home page Giter Site logo

lagom-js's People

Contributors

an-tex avatar mliarakos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

an-tex

lagom-js's Issues

Scala 2.13 Support

Update lagom.js to support Scala 2.13.

Lagom.js depends on Akka.js, which is still working on Scala 2.13 support (see this comment in akka-js/akka.js#103).

Once that is resolved it should be as simple as adding Scala 2.13 to scalaVersions in build.sbt:

val scalaVersions = Seq("2.12.10", "2.13.1")

Evaluate back-pressure implementation for sending side WebSocket messages

Currently, the lagom.js WebSocket client does not support back-pressure for sending or receiving messages over the socket. As described here, back-pressure for receiving messages is not possible under the current WebSocket standard.

However, it is possible to provide back-pressure for sent messages using WebSocket.bufferedAmount, as described here. We should evaluate if sending side back-pressure can be implemented using this approach.

Implement Circuit Breakers

The feature/circuit-breaker branch contains a mostly working implementation of circuit breakers for Lagom.js. The outstanding issues are:

The CircuitBreakerMetricsProviderImpl is a no-op implementation that doesn't actually collect any metrics because the metrics library used by Lagom isn't available for Scala.js. I need to work on a real implementation, but it isn't critical to releasing the actual circuit breaker functionality.

Client header parsing fails on empty header

The ClientServiceCallInvoker.parseHeaders method fails if there are no response headers or if a header is empty. The method assumes headers will have the form "key: values".

The method uses xhr.getAllResponseHeaders() to get headers. In some cases a request will fail with no response headers (e.g., CORS issue), which causes getAllResponseHeaders() to return an empty string and the method to fail. Additionally, if a header was ever empty it would also cause the method to fail.

Complete WebSocket Client Implementation

The WebSocket client implementation is missing some important features. It needs to:

  • handle binary data
  • handle socket close to determine if the socket failed
  • parse exceptions

Provide convenient access to the default client config

Due to akka-js/shocon#55 adding client settings to the lagom.js client config is difficult. Lagom.js should provide access to the default client config so it can be used by user, similar to Akka.js:

lazy val conf =
  ConfigFactory
    .parseString("""
    akka {
      loglevel = "DEBUG"
      stdout-loglevel = "DEBUG"
    }""")
    .withFallback(akkajs.Config.default)

lazy val system = ActorSystem("yourname", conf)

Looking forward

Stepping by just to say that I love this project!
I would love to speak with you about what you are trying to achieve and obvious dependencies on akka.js to support as much as I can. You have my personal email in my GitHub profile or you can reach out on Gitter or Twitter as you prefer!
Cheers!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.