node学习笔记之io.sockets
socket.get和socket.set函数已经失效,代码修改如下所示:
服务器端:
var httpd = require('http').createServer(handler); var io = require('socket.io').listen(httpd); var fs = require('fs'); httpd.listen(3000); function handler(req, res) { fs.readFile(__dirname + '/index.html', function(err, data) { if (err) { res.writeHead(500); return res.end('Error loading index.html'); } res.writeHead(200); res.end(data); } ); } io.sockets.on('connection', function (socket) { socket.on('clientMessage', function(content) { socket.emit('serverMessage', 'You said: ' + content); var username = null; if (socket.username) { username = socket.username; } socket.broadcast.emit('serverMessage', username + ' said: ' + content); }); socket.on('login', function(username) { socket.username = username; socket.emit('serverMessage', 'Currently logged in as ' + username); socket.broadcast.emit('serverMessage', 'User ' + username + ' logged in'); }); socket.emit('login'); });
客户端:
<html>
<head>
<title>Node.js WebSocket chat</title>
<style type="text/css">
#input {
width: 200px;
}
#messages {
position: fixed;
top: 40px;
bottom: 8px;
left: 8px;
right: 8px;
border: 1px solid #EEEEEE;
padding: 8px;
}
</style>
</head>
<body>
Your message:
<input type="text" id="input">
<div id="messages"></div>
<script src="http://localhost:3000/socket.io/socket.io.js"></script>
<script type="text/javascript">
var messagesElement = document.getElementById('messages');
var lastMessageElement = null;
function addMessage(message) {
var newMessageElement = document.createElement('div');
var newMessageText = document.createTextNode(message);
newMessageElement.appendChild(newMessageText);
messagesElement.insertBefore(newMessageElement,
lastMessageElement);
lastMessageElement = newMessageElement;
}
var socket = io.connect('http://localhost:3000');
socket.on('serverMessage', function(content) {
addMessage(content);
});
socket.on('login', function() {
var username = prompt('What username would you like to use?');
socket.emit('login', username);
});
var inputElement = document.getElementById('input');
inputElement.onkeydown = function(keyboardEvent) {
if (keyboardEvent.keyCode === 13) {
socket.emit('clientMessage', inputElement.value);
inputElement.value = '';
return false;
} else {
return true;
}
};
</script>
</body>
</html>

浙公网安备 33010602011771号