2011-06-02 236 views
0

我正在按照NodeTuts上的教程进行操作。我试图让一个聊天服务器使用socket.io工作。Socket.io服务器似乎没有连接?

我可以很好地启动节点实例,当我这样做时,我会得到“socket.io ready - accepting connections”消息。当我将浏览器指向localhost:8888时,我得到了template.html中的html表单,这样看起来都很好。我似乎从来没有做过套接字连接,但我从来没有看到“连接已收到”日志或“欢迎使用聊天服务器”消息。

任何想法是什么问题?

var fs, http, io, server, socket, sys; 
    http = require('http'); 
    fs = require('fs'); 
    sys = require('sys'); 
    io = require('socket.io'); 
    server = http.createServer(function(req, res) { 
    var rs; 
    console.log('server started'); 
    res.writeHead(200, { 
     'Content-Type': 'text/html' 
    }); 
    rs = fs.createReadStream(__dirname + '/template.html'); 
    return sys.pump(rs, res); 
    }); 
    socket = io.listen(server); 
    socket.on('connection', function(client) { 
    var username; 
    console.log('Connection received'); 
    client.send('Welcome to the chat server'); 
    client.send('Please enter a username'); 
    return client.on('message', function(message) { 
     if (!username) { 
     username = message; 
     return client.send("Hi " + username + "!"); 
     } else { 
     return socket.broadcast("" + username + ": " + message); 
     } 
    }); 
    }); 
    server.listen(8888); 

这里是template.html

<script src="/socket.io/socket.io.js"></script> 
<script> 
    $(function() { 
     socket = new io.Socket('localhost', {port: 8888}); 
     socket.on('message', function(message) { 
     var data = message.data 
     data = data.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"); 
     console.log(data); 
     $('#log ul').append('<li>' + data + '</li>'); 
     window.scrollBy(0, 1000000000000000); 
     entry_el.focus(); 
     }); 


     var entry_el = $('#entry'); 
     entry_el.keypress(function(event) { 
     if (event.keyCode != 13) return; 
     var msg = entry_el.attr('value'); 
     // if the message is not empty 
     if (msg) { 
      socket.send(msg); 
      entry_el.attr('value', ''); 
     } 
     }); 
    }); 
    </script> 
+2

在template.html什么之后?它看起来像错误可能在那里... – nicolaskruchten 2011-06-02 23:37:05

+0

错误是在客户端JavaScript。 – Raynos 2011-06-02 23:41:05

+0

编辑添加客户端 – 2011-06-02 23:52:56

回答

1

我相信你需要调用socket.connect();在您的客户端代码的JS部分,socket = new io.Socket('localhost', {port: 8888});

+0

英雄!谢谢你,先生。 – 2011-06-02 23:57:55

相关问题