On Tue, 04 Jun 2024 08:58:05 GMT, Sönke Ludwig wrote:

On Tue, 28 May 2024 12:19:26 GMT, MrX wrote:

Hello,

Could someone share an example on how to execute a ping/pong through a WebSocket?

Thank you.

Since there a similar ticket just popped up, in case this is actually meant to send a low-level ping/pong on the web socket protocol level, this might be relevant: https://github.com/vibe-d/vibe.d/issues/2802

module app;

import vibe.core.core;
import vibe.core.log;
import vibe.http.fileserver : serveStaticFiles;
import vibe.http.router : URLRouter;
import vibe.http.server;
import vibe.web.web;
import vibe.http.websockets;
import vibe.vibe;


int main(string[] args)
{
	string WS_URL= "wss://echo.websocket.org";
	auto ws_url = URL(WS_URL);
	const use_tls = (ws_url.schema == "wss" || ws_url.schema == "https") ? true : false;
    ws_url.schema = use_tls ? "https" : "http";
    auto receiver = connectWebSocket(ws_url);
	
	
	ConnectionStream m_conn;
	RandomNumberStream m_rng;
	
	auto message = new OutgoingWebSocketMessage(m_conn, FrameOpcode.ping, m_rng);

	while (receiver.waitForData())
	 {
			auto msg = parseJsonString(receiver.receiveText());
			
			try {
					ws.send((message) { message.write([]); }, FrameOpcode.ping);
				}
				catch (Exception ex)
				{
					logInfo("error %s", ex.msg);
				}
			logInfo("%s", msg);
	    }
	
	return 0;
}

This does not work:
source/app.d(30,17): Error: class vibe.http.websockets.OutgoingWebSocketMessage constructor this is not accessible
source/app.d(39,32): Error: none of the overloads of write are callable using argument types ()

Do you have an example that works?