socket real node con javascript node.js comet socket.io
http://dl.dropbox.com/u/314941/socketio.zip

javascript - real - socket io socket io js



NodeJS+socket.io: simple ejemplo de Cliente/Servidor no funciona (3)

Tomé tu ejemplo y lo dejé caer en una aplicación de nodo usando express. Su código HTML se colocó en un archivo HTML estático en público. Tu ejemplo funcionó bien. El código se muestra a continuación. Quería asegurarme de que tanto el archivo de script socket.io como el archivo HTML se estaban sirviendo correctamente.

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(){ }) });

Estoy usando NodeJS v0.4.8 y la última versión de socket.io desde

npm instala socket.io

en Ubuntu:

Linux mars 2.6.38-8-generic # 42-Ubuntu SMP Lun Abr 11 03:31:50 UTC 2011 i686 i686 i386 GNU / Linux

Desafortunadamente, el siguiente código no produce ningún resultado, ya sea en el cliente o en el servidor.

¿Alguien tiene una pista?

LADO DEL SERVIDOR

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"); }) ; });

LADO DEL CLIENTE

<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>

La salida de NodeJS (NO las llamadas a sys.puts ("...")) es:

info - socket.io inició la depuración - se solucionó la depuración estática de /socket.io.js - información autorizada por el cliente - información autorizada por handshake - handshaken b61a5c2751c1c8c8493db4b79d19e779


También (como Derrish) me gusta usar Express Framework para simplificar mi trabajo ( AWESOME :) ). Puede descargar y extraer esta muestra de http://dl.dropbox.com/u/314941/socketio.zip . Creo que ni siquiera tiene que instalar estos módulos porque los he agrupado localmente ( solo se ejecutan ) gracias a npm :).

Cómo instalar:

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

El código:

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>

Listado de mis módulos:

alfred@alfred-laptop:~/tmp/socketio$ npm ls /home/alfred/tmp/socketio ├─┬ [email protected] │ ├── [email protected] │ ├── [email protected] │ └── [email protected] └── [email protected]

Módulos instalados (NO es necesario):

npm install express npm install socket.io

El navegador mostrará:

  1. socket.io al inicio, pero probablemente no puedas ver esto porque será reemplazado por connected .
  2. connected cuando el usuario se conecta a socket.io.
  3. Después de 2 segundos, se mostrará Waited two seconds!

Ejemplo de trabajo de Express 3.0 + Socket.io

servidor (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"); }); });

cliente (index.html)

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

Puede pasar el código usando el siguiente enlace https://github.com/sreekumar-kr/Expree3.0---Socket.IO