socket.io.js 使用 node.js 和本地主机 html 客户端连接时出错

socket.io.js error connecting using node.js and localhost html client

我收到错误 socket.io.js:2919 和 net::err_connection_refused 只是想解决这个问题,谢谢 需要向 post 添加更多详细信息 this

这里是服务器套接字代码

var app = require('http').createServer(connectHandler),
    io = require('socket.io').listen(app),
    fs = require('fs');

app.listen(8080);

function connectHandler (req, res) {
  fs.readFile(__dirname + '/client.html',
  function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading client.html');
    }

    res.writeHead(200);
    res.end(data);
  });
}

var members = [];
io.sockets.on('connection', function (socket) {
  socket.on('joined', function(data) {
    var mbr = data;
    mbr.id = socket.id;
    members.push(mbr);
    socket.broadcast.emit('joined', data);
    console.log(data.name, 'joined the room');
  });

  socket.on('message', function(data) {
    socket.broadcast.emit('message', data);
  });

  socket.on('disconnect', function() {
    for (var i = 0; i < members.length; i++) {
      if (members[i].id === socket.id) {
        socket.broadcast.emit('disconnected', { name: members[i].name });
      }
    }
  });
});

这里是 html 套接字客户端

<!doctype html>
<html>
<head>
    <script src="/socket.io/socket.io.js"></script>
</head>
<body>
    <div id="messages">
    </div>
    <form id="newChat">
        <textarea id="text"></textarea>
        <input type="submit" id="sendMessage" value="Send" />
    </form>
    <script>
        var socket = io.connect('http://localhost');
        var who;

        socket.on('connect', function() {
            var chatter = prompt('Please enter your name');
            chatter = (chatter === "" || chatter === null) ? "anon" : chatter;
            addChatter("you", "Joined");
            who = chatter;
            socket.emit('joined', { 
                name: chatter
            });

        });

        function addChatter(name, message) {
            var chat = document.getElementById("messages");
            chat.innerHTML += "<div>" + name + " - " + message + "</div>";
        }

        socket.on('joined', function(data) {
            console.log(data);
            addChatter(data.name, ' joined');
        });

        socket.on('disconnected', function(data) {
            addChatter(data.name, 'disconnected');
        });

html 文件中的本地主机连接可以在新版本中通过以下方式建立:

var socket = io();

它将自己绑定到服务器。

请参考http://socket.io/get-started/chat/

作为旁注;可以通过以下方式启动服务器上的连接:

io.on('connection' ...

而不是

io.sockets.on('connection' ...

var app = require('http').createServer(connectHandler),
    io = require('socket.io').listen(app),
    fs = require('fs');

function connectHandler (req, res) {
  fs.readFile(__dirname + '/client.html',
  function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading client.html');
    }

    res.writeHead(200);
    res.end(data);
  });
}

var members = [];
io.on('connection', function (socket) {
        console.log(socket);
  socket.on('joined', function(data) {
    var mbr = data;
    mbr.id = socket.id;
    members.push(mbr);
    socket.broadcast.emit('joined', data);
    console.log(data.name, 'joined the room');
  });

  socket.on('message', function(data) {
    socket.broadcast.emit('message', data);
  });

  socket.on('disconnect', function() {
    for (var i = 0; i < members.length; i++) {
      if (members[i].id === socket.id) {
        socket.broadcast.emit('disconnected', { name: members[i].name });
      }
    }
  });
});

app.listen(8077);

<!doctype html>
<html>
<head>
        <script src="https://cdn.socket.io/socket.io-1.3.5.js"></script>
</head>
<body>
    <div id="messages">
    </div>
    <form id="newChat">
        <textarea id="text"></textarea>
        <input type="submit" id="sendMessage" value="Send" />
    </form>
    <script type="text/javascript">
        var socket = io();
        var who;

        socket.on('connect', function() {
            var chatter = prompt('Please enter your name');
            chatter = (chatter === "" || chatter === null) ? "anon" : chatter;
            addChatter("you", "Joined");
            who = chatter;
            socket.emit('joined', {
                name: chatter
            });

        });

        function addChatter(name, message) {
            var chat = document.getElementById("messages");
            chat.innerHTML += "<div>" + name + " - " + message + "</div>";
        }

        socket.on('joined', function(data) {
            console.log(data);
            addChatter(data.name, ' joined');
        });

        socket.on('disconnected', function(data) {
            addChatter(data.name, 'disconnected');
        });
    </script>