我正在按照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, "&").replace(/</g, "<").replace(/>/g, ">");
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>
在template.html什么之后?它看起来像错误可能在那里... – nicolaskruchten 2011-06-02 23:37:05
错误是在客户端JavaScript。 – Raynos 2011-06-02 23:41:05
编辑添加客户端 – 2011-06-02 23:52:56