Change Socket.IO static file serving path

I am using Socket.IO on a Node server with a basic HTTP server (no Express or Connect or anything like that). By default, Socket.IO serves the client file to

/socket.io/socket.io.js

I would like to be able to change that base path to something else, like

/foo/bar/socket.io/socket.io.js

Is there any built-in way to do this, or any way without changing Socket.IO's code? I think the answer lies in the Static module (require('socket.io').Static)), but short of writing my own to replace the default, I see no way to go and change the way that behaves.

How can I do this?

Answers


The resource option allows you to configure socket.io's root directory. It defaults to /socket.io.

var io = require('socket.io').listen(app, { resource: '/foo/bar/socket.io' });

Note that this setting also affects where socket.io's endpoints are served from, so you must also change this setting in your client code.

var socket = io.connect('http://example.com', { resource: 'foo/bar/socket.io' });

(Note we don't use a leading slash here for some reason.)


For socket.io version 1.2.1, this works for me.

Server side:

var io = require('socket.io')({path: '/foo/bar'});

Client side:

var socket = io.connect('http://example.com', {path: '/foo/bar'});

FYI: http://socket.io/docs/migrating-from-0-9/#configuration-differences


If you are using socket.io version 1.0, the configuration is different than in previous versions.

For client side:

var socket = io.connect('http://localhost:8888', { path: '/some/path/socket.io' });

For server side

    var socket = require("socket.io")( { resource: '/some/path/socket.io' });

You can find the client side script socket.io.js in the path node_modules/socket.io/node_modules/socket.io-client/dist. Copy it to a new folder and call it with the correct path from the client

<script src="/your/path/to/socket.io.js"></script>

For more configuration visit the wiki


Need Your Help

Doctrine2 - Multiple insert in one shot

php mysql symfony doctrine-orm

I'm new to Doctrine and there are still some blurred areas for me. In this case I'm inserting new record in the database using a loop and the entity manager. It works fine but I noticed that Doctrine

Switching ViewControllers with UISegmentedControl in iOS5

ios uiviewcontroller uikit uisegmentedcontrol

I am trying something very simple but somehow I can't get it to work. All I try to do is switching between 2 View Controllers using an UISegmentedControl as you can see it for example in the App St...