I iyan New Member Licensed User Longtime User Dec 26, 2022 #1 Hi guys, is it possible implement websocket-server for ocpp in b4j ? info: client send non-standard map/json payload data b4j, example pdu code (payload) client : Code: Copy [2,"1234","Heartbeat",{}] [2,"1235","BootNotification",{"chargePointVendor":"DELTA","chargePointModel":"ACMAX","chargePointSerialNumber":""}] error test b4j server : Code: Copy 2022-12-26 11:01:19.865:INFO:oejs.Server:main: Started @1097ms Emulated network latency: 100ms java.lang.RuntimeException: JSON Object expected. at anywheresoftware.b4j.objects.collections.JSONParser.NextObject(JSONParser.java:67) at anywheresoftware.b4j.object.WebSocketModule$Adapter.onWebSocketText(WebSocketModule.java:110) at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onTextMessage(JettyListenerEventDriver.java:189) at org.eclipse.jetty.websocket.common.message.SimpleTextMessage.messageComplete(SimpleTextMessage.java:69) at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.appendMessage(AbstractEventDriver.java:66) at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onTextFrame(JettyListenerEventDriver.java:158) at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.incomingFrame(AbstractEventDriver.java:162) at org.eclipse.jetty.websocket.common.WebSocketSession.incomingFrame(WebSocketSession.java:476) at org.eclipse.jetty.websocket.common.extensions.AbstractExtension.nextIncomingFrame(AbstractExtension.java:183) at org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension.nextIncomingFrame(PerMessageDeflateExtension.java:105) at org.eclipse.jetty.websocket.common.extensions.compress.CompressExtension.forwardIncoming(CompressExtension.java:143) at org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension.incomingFrame(PerMessageDeflateExtension.java:85) at org.eclipse.jetty.websocket.common.extensions.ExtensionStack.incomingFrame(ExtensionStack.java:220) at org.eclipse.jetty.websocket.common.Parser.notifyFrame(Parser.java:220) at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:245) at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.readParse(AbstractWebSocketConnection.java:560) at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConnection.java:391) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:760) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:678) at java.lang.Thread.run(Thread.java:750) java.lang.RuntimeException: JSON Object expected. at anywheresoftware.b4j.objects.collections.JSONParser.NextObject(JSONParser.java:67) at anywheresoftware.b4j.object.WebSocketModule$Adapter.onWebSocketText(WebSocketModule.java:110) at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onTextMessage(JettyListenerEventDriver.java:189) at org.eclipse.jetty.websocket.common.message.SimpleTextMessage.messageComplete(SimpleTextMessage.java:69) at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.appendMessage(AbstractEventDriver.java:66) at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onTextFrame(JettyListenerEventDriver.java:158) at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.incomingFrame(AbstractEventDriver.java:162) at org.eclipse.jetty.websocket.common.WebSocketSession.incomingFrame(WebSocketSession.java:476) at org.eclipse.jetty.websocket.common.extensions.AbstractExtension.nextIncomingFrame(AbstractExtension.java:183) at org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension.nextIncomingFrame(PerMessageDeflateExtension.java:105) at org.eclipse.jetty.websocket.common.extensions.compress.CompressExtension.forwardIncoming(CompressExtension.java:143) at org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension.incomingFrame(PerMessageDeflateExtension.java:85) at org.eclipse.jetty.websocket.common.extensions.ExtensionStack.incomingFrame(ExtensionStack.java:220) at org.eclipse.jetty.websocket.common.Parser.notifyFrame(Parser.java:220) at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:245) at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.readParse(AbstractWebSocketConnection.java:560) at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConnection.java:391) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:760) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:678) at java.lang.Thread.run(Thread.java:750) Regards iyan Attachments Snip 2022-12-26 11.18.38.jpg 202.3 KB · Views: 406
Hi guys, is it possible implement websocket-server for ocpp in b4j ? info: client send non-standard map/json payload data b4j, example pdu code (payload) client : Code: Copy [2,"1234","Heartbeat",{}] [2,"1235","BootNotification",{"chargePointVendor":"DELTA","chargePointModel":"ACMAX","chargePointSerialNumber":""}] error test b4j server : Code: Copy 2022-12-26 11:01:19.865:INFO:oejs.Server:main: Started @1097ms Emulated network latency: 100ms java.lang.RuntimeException: JSON Object expected. at anywheresoftware.b4j.objects.collections.JSONParser.NextObject(JSONParser.java:67) at anywheresoftware.b4j.object.WebSocketModule$Adapter.onWebSocketText(WebSocketModule.java:110) at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onTextMessage(JettyListenerEventDriver.java:189) at org.eclipse.jetty.websocket.common.message.SimpleTextMessage.messageComplete(SimpleTextMessage.java:69) at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.appendMessage(AbstractEventDriver.java:66) at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onTextFrame(JettyListenerEventDriver.java:158) at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.incomingFrame(AbstractEventDriver.java:162) at org.eclipse.jetty.websocket.common.WebSocketSession.incomingFrame(WebSocketSession.java:476) at org.eclipse.jetty.websocket.common.extensions.AbstractExtension.nextIncomingFrame(AbstractExtension.java:183) at org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension.nextIncomingFrame(PerMessageDeflateExtension.java:105) at org.eclipse.jetty.websocket.common.extensions.compress.CompressExtension.forwardIncoming(CompressExtension.java:143) at org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension.incomingFrame(PerMessageDeflateExtension.java:85) at org.eclipse.jetty.websocket.common.extensions.ExtensionStack.incomingFrame(ExtensionStack.java:220) at org.eclipse.jetty.websocket.common.Parser.notifyFrame(Parser.java:220) at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:245) at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.readParse(AbstractWebSocketConnection.java:560) at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConnection.java:391) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:760) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:678) at java.lang.Thread.run(Thread.java:750) java.lang.RuntimeException: JSON Object expected. at anywheresoftware.b4j.objects.collections.JSONParser.NextObject(JSONParser.java:67) at anywheresoftware.b4j.object.WebSocketModule$Adapter.onWebSocketText(WebSocketModule.java:110) at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onTextMessage(JettyListenerEventDriver.java:189) at org.eclipse.jetty.websocket.common.message.SimpleTextMessage.messageComplete(SimpleTextMessage.java:69) at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.appendMessage(AbstractEventDriver.java:66) at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onTextFrame(JettyListenerEventDriver.java:158) at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.incomingFrame(AbstractEventDriver.java:162) at org.eclipse.jetty.websocket.common.WebSocketSession.incomingFrame(WebSocketSession.java:476) at org.eclipse.jetty.websocket.common.extensions.AbstractExtension.nextIncomingFrame(AbstractExtension.java:183) at org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension.nextIncomingFrame(PerMessageDeflateExtension.java:105) at org.eclipse.jetty.websocket.common.extensions.compress.CompressExtension.forwardIncoming(CompressExtension.java:143) at org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension.incomingFrame(PerMessageDeflateExtension.java:85) at org.eclipse.jetty.websocket.common.extensions.ExtensionStack.incomingFrame(ExtensionStack.java:220) at org.eclipse.jetty.websocket.common.Parser.notifyFrame(Parser.java:220) at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:245) at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.readParse(AbstractWebSocketConnection.java:560) at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConnection.java:391) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:760) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:678) at java.lang.Thread.run(Thread.java:750) Regards iyan
OliverA Expert Licensed User Longtime User Dec 26, 2022 #2 Where is the sample server code that is producing the error? Upvote 0
I iyan New Member Licensed User Longtime User Dec 26, 2022 #3 OliverA said: Where is the sample server code that is producing the error? Click to expand... Here is the code : Library : JServer3 v3.00, jCore v9.8 , jdk1.8.0_341 B4X: Copy Sub Process_Globals Dim srvr As Server End Sub Sub AppStart (Args() As String) srvr.Initialize("Srvr") srvr.AddWebSocket("/main", "clsWsMain") srvr.Port = 8082 srvr.Start StartMessageLoop End Sub clsWsMain : Code: Copy 'WebSocket class Sub Class_Globals Private ws As WebSocket End Sub Public Sub Initialize End Sub Private Sub WebSocket_Connected (WebSocket1 As WebSocket) ws = WebSocket1 End Sub Private Sub WebSocket_Disconnected End Sub Upvote 0
OliverA said: Where is the sample server code that is producing the error? Click to expand... Here is the code : Library : JServer3 v3.00, jCore v9.8 , jdk1.8.0_341 B4X: Copy Sub Process_Globals Dim srvr As Server End Sub Sub AppStart (Args() As String) srvr.Initialize("Srvr") srvr.AddWebSocket("/main", "clsWsMain") srvr.Port = 8082 srvr.Start StartMessageLoop End Sub clsWsMain : Code: Copy 'WebSocket class Sub Class_Globals Private ws As WebSocket End Sub Public Sub Initialize End Sub Private Sub WebSocket_Connected (WebSocket1 As WebSocket) ws = WebSocket1 End Sub Private Sub WebSocket_Disconnected End Sub
OliverA Expert Licensed User Longtime User Dec 26, 2022 #4 For a non-B4X client to communicate with a B4J WebSocket server, the JSON payload must be configured in a particular way. For more information, see Post in thread 'Websocket Server to server data to any websocket client(not b4x)' https://www.b4x.com/android/forum/t...y-websocket-client-not-b4x.124890/post-780000 Upvote 0
For a non-B4X client to communicate with a B4J WebSocket server, the JSON payload must be configured in a particular way. For more information, see Post in thread 'Websocket Server to server data to any websocket client(not b4x)' https://www.b4x.com/android/forum/t...y-websocket-client-not-b4x.124890/post-780000
I iyan New Member Licensed User Longtime User Dec 26, 2022 #5 OliverA said: For a non-B4X client to communicate with a B4J WebSocket server, the JSON payload must be configured in a particular way. For more information, see Post in thread 'Websocket Server to server data to any websocket client(not b4x)' https://www.b4x.com/android/forum/t...y-websocket-client-not-b4x.124890/post-780000 Click to expand... Client is EV (Electric Vehicle) with OCPP standardization, I can't change the format But anyway, Thanks for the great answer & feedback. Thanks Upvote 0
OliverA said: For a non-B4X client to communicate with a B4J WebSocket server, the JSON payload must be configured in a particular way. For more information, see Post in thread 'Websocket Server to server data to any websocket client(not b4x)' https://www.b4x.com/android/forum/t...y-websocket-client-not-b4x.124890/post-780000 Click to expand... Client is EV (Electric Vehicle) with OCPP standardization, I can't change the format But anyway, Thanks for the great answer & feedback. Thanks