Thursday 20 April 2017

node.js - issue with faye-websocket-node as client and sockjs-node as server

I'm trying to use faye-websocket-node ^0.11.0 as client, sockjs-node 0.3.18 as server, please refer to below client/server code

Issue:

  • if client and server prefix matchs, like below code prefix = /hello, client will throw Error during WebSocket handshake: Unexpected response code: 200

  • I tried using prefix = / on the server, this time there won't be any error message, but there's no connection open, no message printed from either client or server on open or on connection code

Question:

How to use faye-websocket-node as client, sockjs-node as server, and have them communicate via websock using node.js?

Thanks!

client code:

var WebSocket = require('faye-websocket'),
    ws        = new WebSocket.Client('ws://127.0.0.1:8888/hello');

ws.on('open', function(event) {
  console.log('open');
  ws.send('Hello, world!');
});

ws.on('message', function(event) {
  console.log('message', event.data);
});

ws.on('close', function(event) {
  console.log('close', event.code, event.reason);
  ws = null;
});

ws.on('error', function(event){
  console.log('error', event.message);
});

server code:

var sockjs = require('sockjs');
var http = require('http');

var sockjsServer = sockjs.createServer({
  sockjs_url: '//d1fxtkz8shb9d2.cloudfront.net/sockjs-0.3.min.js'
});

sockjsServer.on('connection', function(conn) {
  console.log('on connection');
  conn.on('data', function(msg) {
    console.log('\nRECV:'+msg);
  });
});

var server = http.createServer();
sockjsServer.installHandlers(server, {prefix:'/hello'});
server.listen(8888, '0.0.0.0');



via jerry

No comments:

Post a Comment