[fpc-pascal] fcl-web websocket

Andrew Haines andrewd207 at aol.com
Sat Dec 24 19:24:40 CET 2022


Hi,

I am trying to test the websocket client in fcl-web by making a simple 
echo client. I have been unable to make it work using fpc trunk on 
linux64. I also crosscompiled to win64 and ran it on wine with identical 
results. The project is attached here if anyone can give some hints.

I am testing it with a server I found here 
https://github.com/vi/wsmirror (written in rust) but also I tried it 
with some public echo servers. There is a html/javascript websocket 
example also for testing it which is working.

I have no real guesses as to the problem. I modified the server that the 
client connects to enough to know when it receives messages and what 
kind. The server never identifies a proper message after the connection 
handshake is completed. It gets something but it doesn't identify it as 
a text message or ping or close etc. The server is dropping the 
connection after a few seconds with ss -t dport = 8080 giving this:

State             Recv-Q Send-Q                         Local Address:Port

CLOSE-WAIT            5 0                                127.0.0.1:47828

I believe those are several ping packets the server is sending that the 
client doesn't read.

One thing the websocket is doing is disabling MSG_SIGNAL so that when 
the pipe is broken it doesn't show an exception. However the component 
doesn't check for this and doesn't send the disconnect event.

I have made my own websocket component in the past which is working but 
I wanted to try the one included with fpc.

I'm really baffled, I spent a long time to try and find what is wrong, 
even putting debug code in the underlying socket components. And 
verifying that the websocket frames are correct.

An oddity I noted is that TInetSocket.CanRead seems to always return 
false if it's used as a client. I may not have understood that fully.

Regards,

Andrew Haines
-------------- next part --------------
A non-text attachment was scrubbed...
Name: websocket_echo_client.zip
Type: application/zip
Size: 5104 bytes
Desc: not available
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20221224/96e811d9/attachment.zip>


More information about the fpc-pascal mailing list