node.js - 使用node.js和localhost html客户端连接socket.io.js错误

标签 node.js socket.io

我收到错误 socket.io.js:2919 和 net::err_connection_refused 只是想解决这个问题,谢谢 需要添加更多详细信息才能发布此内容

这是服务器套接字代码

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文件中的localhost连接:

var socket = io();

它将自行绑定(bind)到服务器。

请引用http://socket.io/get-started/chat/

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

io.on('连接'...

而不是

io.sockets.on('连接'...

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>

关于node.js - 使用node.js和localhost html客户端连接socket.io.js错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32874063/

相关文章:

javascript - Pusher 身份验证套接字 ID 未定义

javascript - Mongoose 保存回调不起作用

javascript - 在不使用 Babel/Webpack 的情况下在 NodeJS 中导入具有绝对路径的 ES6 模块

node.js - Socket.io 通过 id 断开客户端

javascript - 如何从 Node 应用程序执行命令

node.js - 根据客户端 POST 表单的字段切换套接字 [ Sails Node js ]

node.js - 使用 Socket.IO 的 emit() 而不是所有 HTTP 请求是一个好习惯吗?

node.js - 如何设置 RedisStore -- Node、Express、Socket.io、Heroku

node.js - nodejs socket.io - 连接到服务器但发出不执行任何操作

node.js - 套接字错误