Giter VIP home page Giter VIP logo

Comments (6)

TVolden avatar TVolden commented on June 27, 2024 1

Hi @cyrilfr

First of all thanks for the question. It been quite around here lately.

When I started out, one of my goals was to decouple the 3rd party implementation of communication. I can't say I succeeded with that, because some have tried to integrate with other Liv's and failed. It really depends on how the implementation is done.

I can try to check out the lib and give you some feedback during the weekend or so.

from java-oca-ocpp.

TVolden avatar TVolden commented on June 27, 2024 1

It looks possible, but I have some concerns.

  • I can't see which draft of websocket they use, which can cause compatibility problems.
  • I'm not sure if wss is supported.

from java-oca-ocpp.

cyrilfr avatar cyrilfr commented on June 27, 2024

Hi @cyrilfr

First of all thanks for the question. It been quite around here lately.

When I started out, one of my goals was to decouple the 3rd party implementation of communication. I can't say I succeeded with that, because some have tried to integrate with other Liv's and failed. It really depends on how the implementation is done.

I can try to check out the lib and give you some feedback during the weekend or so.

That would be great thanks :)

from java-oca-ocpp.

cyrilfr avatar cyrilfr commented on June 27, 2024

Play Framework uses Akka as HTTP and WebSocket implementation.
Personally, I use this kind of code:

public WebSocket socket()
{
   return WebSocket.Json.accept(request ->
   {
        // Just ignore the input
        Sink<JsonNode, ?> in = Sink.ignore();

        // Send a single 'Hello!' message and close
        JsonNode message = Json.newObject();
        message.put("foo", "Hello!");
        Source<JsonNode, ?> out = Source.single(message);

        return Flow.fromSinkAndSource(in, out);
   });
}

WSS is fully supported. Personally, I prefer to use NGINX as a proxy for WSS.

Maybe the library should be "WebSocket implementation independant" and work with callbacks. So you can invoke the OCPP communicator with any WebSocket.

To receive a message with Play for example:

public WebSocket socket()
{
    return WebSocket.Json.accept(request ->
    {
        Sink<JsonNode, ?> sink = Sink.foreach(message ->
        {
            // parse the JSON message here to get the OCPP-J request and payload
        });
            
        Source<JsonNode, ?> source = Source.<JsonNode>actorRef(256, OverflowStrategy.dropHead())
            .mapMaterializedValue(actorRef ->
            {
                // save the actorRef to send message here
                return actorRef;
            })
            .watchTermination((actorRef, termination) ->
            {
                termination.whenComplete((done, cause) ->
                {
                    // remove the actorRef here
                });
                
                return NotUsed.getInstance();
            });
            
        return Flow.fromSinkAndSource(sink, source);
    });
}

To send a message with an instance of ActorRef:

JsonNode message = Json.newObject();
// create a JSON message with OCCP-J request and payload
actorRef.tell(message, ActorRef.noSender());

To close the connection:

actorRef.tell(PoisonPill.getInstance(), ActorRef.noSender());

from java-oca-ocpp.

cyrilfr avatar cyrilfr commented on June 27, 2024

I'm still interested in using OCA OCPP as a standalone library (not WS or framework integration specific).
Do you have any news about it? How could I help?

from java-oca-ocpp.

TVolden avatar TVolden commented on June 27, 2024

Hi @cyrilfr

It's nice that you are still interested, unfortunately I don't have any news for you.

I don't have much time to spare, so I havent worked on the lib for some time now, and I don't think I will for years to come.

The case is, that I'm partaking on a masters degree this week, so I reckon I will be very busi for the next two years.

If you want to give it a try, then I'll surely assist you, anyway possible. I just don't have a lot of spare time.

Sincerely,
Thomas Volden

from java-oca-ocpp.

Related Issues (20)

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.