title: Socket.IO WebSocket server/page different hosts
body: <p>Using Socket.IO's WebSocket I have successfully managed a chat application from my home computer where both the index.html and app.js (server) located together. Since my webhost does not offer WebSockets I want to host the app.js (server) on my computer and the actual webpage where it connects on my webhost. I am having difficulties establishing a connection. My port is forwarded. I believe its something in my app.js that I need to change to establish the link. Here is my code</p>
  
  <p>app.js (server, run off local computer)</p>
  
  <pre><code>var app = require('express').createServer()
  var io = require('socket.io').listen(app);
  
  app.listen(8080);
  
  // routing
  app.get('/', function (req, res) {
    res.sendfile('http://mywebhost.com/chat.php');
  });
  
  // usernames which are currently connected to the chat
  var usernames = {};
  
  // rooms which are currently available in chat
  var rooms = ['room1','room2','room3'];
  
  io.sockets.on('connection', function (socket) {
  
  // when the client emits 'adduser', this listens and executes
  socket.on('adduser', function(username){
      // store the username in the socket session for this client
      socket.username = username;
      // store the room name in the socket session for this client
      socket.room = 'room1';
      // add the client's username to the global list
      usernames[username] = username;
      // send client to room 1
      socket.join('room1');
      // echo to client they've connected
      socket.emit('updatechat', 'SERVER', 'you have connected to room1');
      // echo to room 1 that a person has connected to their room
      socket.broadcast.to('room1').emit('updatechat', 'SERVER', username + ' has connected to this room');
      socket.emit('updaterooms', rooms, 'room1');
  });
  
  // when the client emits 'sendchat', this listens and executes
  socket.on('sendchat', function (data) {
      // we tell the client to execute 'updatechat' with 2 parameters
      io.sockets.in(socket.room).emit('updatechat', socket.username, data);
  });
  
  socket.on('switchRoom', function(newroom){
      // leave the current room (stored in session)
      socket.leave(socket.room);
      // join new room, received as function parameter
      socket.join(newroom);
      socket.emit('updatechat', 'SERVER', 'you have connected to '+ newroom);
      // sent message to OLD room
      socket.broadcast.to(socket.room).emit('updatechat', 'SERVER', socket.username+' has left this room');
      // update socket session room title
      socket.room = newroom;
      socket.broadcast.to(newroom).emit('updatechat', 'SERVER', socket.username+' has joined this room');
      socket.emit('updaterooms', rooms, newroom);
  });
  
  // when the user disconnects.. perform this
  socket.on('disconnect', function(){
      // remove the username from global usernames list
      delete usernames[socket.username];
      // update list of users in chat, client-side
      io.sockets.emit('updateusers', usernames);
      // echo globally that this client has left
      socket.broadcast.emit('updatechat', 'SERVER', socket.username + ' has disconnected');
      socket.leave(socket.room);
  });
  });
  </code></pre>
  
  <p>chat.php (run on webhost)</p>
  
  <pre><code>&lt;script&gt;
  var socket = io.connect(\'http://scope.bnetweb.org:8080\');
  // various irrelevant javascript
  </code></pre>
  
  <p>in app.js I am fairly sure I need to change the</p>
  
  <pre><code>app.get('/', function (req, res) {
    res.sendfile('http://mywebhost.com/chat.php');
  });
  </code></pre>
  
  <p>to something else? Or remove it entirely? I think this is Socket.IO's way of making sure no unauthorized connections are made. Any help is greatly appreciated in achieving this.</p>