Le 2016-09-21 15:29, Guillaume Poirier-Morency a écrit :
Le mercredi 21 septembre 2016 à 15:21 +0100, Baptiste Gelez a écrit :
Hi everyone,
I'm creating a little app that should be able to communicate with
other
processes (both sending and receiving messages). I first tried to do
it
by launching child processes and sending/receving messages with
stdout/stdin. But I didn't find how to receive a signal when the
child
process is writing on his stdout.
Then, I tried with websockets. I use the libsoup solution. This is
my
code :
const uint16 port = 8080;
InetAddress address = new InetAddress.loopback (SocketFamily.IPV4);
InetSocketAddress inetaddress = new InetSocketAddress (address,
port);
GLib.Socket socket = new GLib.Socket (SocketFamily.IPV4,
SocketType.STREAM, SocketProtocol.TCP);
socket.bind (inetaddress, true);
socket.listen ();
Server serv = new Server (null);
serv.add_websocket_handler (null, null, null, (server, conn, path,
client) => {
conn.message.connect ((type, message) => {
// receive messages en responds ...
});
});
serv.listen_socket (socket, 0);
But when I try to connect to ws://localhost (with JavaScript) it
tells
me "Firefox can't establish a connection with the server at the
address
ws://localhost/."
Valadoc and libsoup C documentation are really poor on Websockets.
Can
you help me to find where is the problem, and how to solve it,
please.
Or at least, giving me some example codes of websocket servers with
libsoup (I can't find any). Thank you.
Baptiste.
_______________________________________________
vala-list mailing list
vala-list@gnome.org
https://mail.gnome.org/mailman/listinfo/vala-list
You should try the 'ws://localhost:8080/' URI instead. It's also
necessary to run a GLib.MainLoop.
Also, you don't need to bind a socket manually if you only want to
listen on the loopback interface, 'listen_local' does that already.
Here's a fully working example:
using GLib;
using Soup;
var serv = new Server (null);
serv.add_websocket_handler (null, null, null, (server, conn, path,
client) => {
conn.message.connect ((type, message) => {
// receive messages en responds ...
});
});
serv.listen_local(8080, 0);
new MainLoop ().run ();
Then connect to 'ws://localhost:8080/'.
How stupid I am ! I'll try your solution, thanks a lot.
_______________________________________________
vala-list mailing list
vala-list@gnome.org
https://mail.gnome.org/mailman/listinfo/vala-list