2

首先,我想为我的问题中的任何错误道歉,这是我的第一个家伙!

我正在尝试使用以下代码测试我的服务器和客户端之间的连接。

它是这样工作的:在某个端口上启动一个套接字,然后客户端尝试在该端口上连接,连接部分成功意味着“node server.js”启动连接,当我在浏览器上访问“localhost”时:8000' 生成了 html 页面,但是当我单击按钮时什么都没有发生。

index.html 代码

<html>
<head>
    <script  src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script src="/socket.io/socket.io.js"></script>
    <script>
    $(document).ready(function() {
    var socket = io.connect("localhost:8000");
    $("#join").click(function() {
    var name = $("#name").val();
    if (name != "") {
        socket.emit("join", name);
      }
    });
    socket.on("update", function(msg) {
        $("#msgs").append("<li>" + msg + "</li>");
    });
    });
    </script>
</head>
<body>
    <input type="text" placeholder="Yor name" id="name">
    <input type="button" name="join" id="join" value="Join!">
    <ul id="msgs">
    </ul>
</body>

server.js 代码

var fs = require('fs'),
    http = require('http'),
sio = require('socket.io');

var server = http.createServer(function(req, res) {
res.writeHead(200, { 'Content-type': 'text/html'});
res.end(fs.readFileSync(__dirname + '/index.html'));
});
server.listen(8000, function() {
console.log('server is running');
});
var socket = sio.listen(server);

socket.on("connection", function (client) {
  client.on("join", function(name) {
  client.emit("update", name + "You have successfully sent your first message.");

  });
});
4

1 回答 1

1

您命名变量的方式使其令人困惑。您的代码中唯一的问题是此代码:

socket.on('connection', handler);

应改为:

socket.sockets.on('connection', handler);

在大多数情况下,以及网站上的示例,EventEmitter通常将其命名为io.sockets. 在您的情况下,您正在做相当于io.on('connection', handler);它无法正常工作的原因。

于 2013-09-17T02:43:45.303 回答