NodeJS + socket.io: simple Client / Server example not working

Im using NodeJS v0.4.8 and the latest version of socket.io from

npm install socket.io

on Ubuntu:

Linux mars 2.6.38-8-generi # 42-Ubuntu SMP Mon Apr 11 03:31:50 UTC 2011 i686 i686 i386 GNU / Linux

The following code, unfortunately, does not produce any output; it does not work on the client or on the server side.

Does anyone have a key?

Server

var http = require('http'), io = require('socket.io'), fs = require('fs'), sys = require('sys'); respcont = fs.readFileSync('testclient.js'); server = http.createServer(function(req, res){ res.writeHead(200, {'Content-Type': 'text/html'}); res.end(respcont); }); server.listen(8082); var socket = io.listen(server); socket.on('connection', function(client){ sys.puts("New client is here!"); client.send("hello world"); client.on('message', function(msg) { sys.puts("client has sent:"+msg); }) ; client.on('disconnect', function() { sys.puts("Client has disconnected"); }) ; }); 

CUSTOMER SIDE

 <html> <body> <script type="text/javascript" src="http://localhost:8082/socket.io/socket.io.js"></script> <script> var socket = new io.Socket(null,{port:8082,rememberTransport:true,timeout:1500}); socket.connect(); socket.on('connect', function() { console.log('connected to server'); socket.send('Hi Server...'); }); socket.on('message', function() { console.log('received a message!'); }); socket.on('disconnect', function() { console.log('disconnected from server'); }); </script> </body> </html> 

Output from NodeJS (NOT calls to sys.puts ("...")):

info - socket.io started debugging - served as static /socket.io.js debug - client information - handshake authorized information - handshake b61a5c2751c1c8c8493db4b79d19e779

+7
source share
3 answers

I also (like Derrish) wanted to use express to simplify my work ( AWESOME :) ). You can download and extract this sample from http://dl.dropbox.com/u/314941/socketio.zip . I believe that you do not even need to install these modules, because I linked them locally ( just run ) thanks to npm :).

How to install:

 alfred@alfred-laptop :~/tmp/socketio$ uname -a Linux alfred-laptop 2.6.35-28-generic #50-Ubuntu SMP Fri Mar 18 19:00:26 UTC 2011 i686 GNU/Linux alfred@alfred-laptop :~/tmp$ wget http://dl.dropbox.com/u/314941/socketio.zip alfred@alfred-laptop :~/tmp$ unzip socketio.zip alfred@alfred-laptop :~/tmp$ cd socketio/ alfred@alfred-laptop :~/tmp/socketio$ node -v v0.4.7 alfred@alfred-laptop :~/tmp/socketio$ npm -v 1.0.6 alfred@alfred-laptop :~/tmp/socketio$ node app.js 

The code:

app.js:

 // npm install express // npm install socket.io var sys = require('sys'), express = require('express'), app = express.createServer('127.0.0.1'), io = require('socket.io'); app.use(express.static(__dirname + '/public')); app.get('/', function (req, res) { res.send('Hello World'); }); app.listen(3000); var socket = io.listen(app); socket.on('connection', function (client){ // new client is here! setTimeout(function () { client.send('Waited two seconds!'); }, 2000); client.on('message', function () { }) ; client.on('disconnect', function () { }); }); 

public /index.html

 <html> <p id="text">socket.io</p> <script src="socket.io/socket.io.js"></script> <script src="jquery-1.6.1.min.js"></script><!-- Downloaded Jquery --> <script> $(document).ready(function(){ var socket = new io.Socket(), text = $('#text'); socket.connect(); socket.on('connect', function () { text.html('connected'); }); socket.on('message', function (msg) { text.html(msg); }); socket.on('disconnect', function () { text.html('disconnected'); }); }); </script> 

List of my modules:

 alfred@alfred-laptop :~/tmp/socketio$ npm ls /home/alfred/tmp/socketio ├─┬ express@2.3.11 │ ├── connect@1.4.6 │ ├── mime@1.2.2 │ └── qs@0.1.0 └── socket.io@0.6.18 

Installed modules (NOT required):

 npm install express npm install socket.io 

The browser will display:

  • socket.io , but you probably won't see this because it will be replaced by connected .
  • connected when the user connects to socket.io.
  • After 2 seconds, Waited two seconds! displayed Waited two seconds! image
+3
source

Express 3.0 + Working Socket.io Example

server (app.js)

 var express = require('express'); var app = express.createServer(); var socket = require('socket.io'); app.configure(function(){ app.use(express.static(__dirname + '/')); }); var server = app.listen(8081); var io = socket.listen(server); io.sockets.on('connection', function (socket) { console.log("connnect"); socket.on('disconnect', function (socket) { console.log("disconnect"); }); }); 

client (index.html)

 <script src="/socket.io/socket.io.js"></script> <script> var socket = io.connect('http://localhost:8081'); </script> 

you can unlock the code using the link below https://github.com/sreekumar-kr/Expree3.0---Socket.IO

+4
source

I took your example and dropped it in a node application using express. Your HTML code has been placed in a static HTML file in the open. Your example worked fine. The code is shown below. I wanted to make sure that the socket.io script file and the HTML file were processed correctly.

 var http = require('http'), io = require('socket.io'), express = require('express'); var app = module.exports = express.createServer(); // Configuration app.configure(function(){ app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(__dirname + '/public')); }); if (!module.parent) { app.listen(9000); console.log("server started at %s", (new Date()).toUTCString()); console.log("listening on port %d", app.address().port); } // socket.io var socket = io.listen(app); socket.on('connection', function(client){ console.log("New client is here!"); client.send("hello world"); client.on('message', function(msg){ console.log("client has sent:"+msg); }) ; client.on('disconnect', function(){ console.log("Client has disconnected"); }) ; client.on('disconnect', function(){ }) }); 
+1
source

All Articles