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

后端 未结 3 1791
日久生厌
日久生厌 2020-12-28 10:31

I’m using NodeJS v0.4.8 and the latest Version of socket.io from

npm install socket.io

on Ubuntu:

Linux m

相关标签:
3条回答
  • 2020-12-28 11:04

    I also(like Derrish) like to use express framework to simplify my work(AWESOME :)). You can download and extract this sample from http://dl.dropbox.com/u/314941/socketio.zip. I believe you don't even have to install these modules because I have bundled 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> 
    

    Listing 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 necessary):

    npm install express
    npm install socket.io
    

    Browser will display:

    1. socket.io on start, but probably you can't see this because it will be replaced with connected.
    2. connected when the user connects to socket.io.
    3. After 2 seconds it will display Waited two seconds!image
    0 讨论(0)
  • 2020-12-28 11:22

    I took your example and dropped it in an a node app using express. Your HTML code was placed in a static HTML file under public. Your example worked fine. The code is shown below. I wanted to make sure both the socket.io script file and the HTML file were being served up properly.

    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(){ }) 
     }); 
    
    0 讨论(0)
  • 2020-12-28 11:25

    Express 3.0 + Socket.io working 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 fork the code using the link below https://github.com/sreekumar-kr/Expree3.0---Socket.IO

    0 讨论(0)
提交回复
热议问题