user7213585
user7213585

Reputation: 11

Connect to node.js websocket server from C program

I am trying to connect to a websocket server writen in node.js + socket.io from C program, or Chrome extension Smart Websocket Client, but I can't. I can connect to it only from other nodejs application or js + socket.io.

Node.js server:

var app = require('http').createServer(handler)
var io = require('socket.io')(app);
var fs = require('fs');

app.listen(3000);

function handler (req, res) {
  fs.readFile(__dirname + '/index.html',
  function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading index.html');
    }

    res.writeHead(200);
    res.end(data);
  });
}

io.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

C client (I use github.com/payden/libwsclient):

#include <time.h>
#include <wsclient/wsclient.h>
#include <errno.h>


int onopen(wsclient *c) {
    printf("ad\n");
    fprintf(stderr, "onopen called: %d\n", c->sockfd);
    libwsclient_send(c, "Hello onopen");
    return 0;
}


void initSocketConnection() {
    //char *host = "ws://echo.websocket.org";
    char *host = "ws://127.0.0.1:3000";

    wsclient *client = libwsclient_new(host);

    if(!client) {
        fprintf(stderr, "Unable to initialize new WS client.\n");
        exit(1);
    }
    printf("connecrionnn \n");
    libwsclient_onopen(client, &onopen);

    char *msg = "{\"msg\":\"STATION_READY_FOR_ACTION\", \"appKey\":\"secret-key\"}";
    libwsclient_send(client, msg);
}

What am I doing wrong?

Upvotes: 0

Views: 1215

Answers (1)

user7213585
user7213585

Reputation: 11

I resolved problem, socket endpoint must be "ws://127.0.0.1:3000/socket.io/?EIO=3&transport=websocket"

Upvotes: 1

Related Questions