window.onload = function() {
var messages = [];
var socket = io.connect('http://localhost:3700');
var field = document.getElementById("field");
var sendButton = document.getElementById("send");
var content = document.getElementById("content");
socket.on('message', function (data) {
if(data.message) {
messages.push(data.message);
var html = '';
for(var i=0; i<messages.length; i++) {
html += messages[i] + '<br />';
}
content.innerHTML = html;
} else {
console.log("There is a problem:", data);
}
});
sendButton.onclick = function() {
var text = field.value;
socket.emit('send', { message: text });
};
}
head
title= "Real time web chat"
script(src='/chat.js')
script(src='/socket.io/socket.io.js')
好,那麼現在我們就可以重新啓動一下這個index.js了。並觀察一下效果
.controls
| Name:
input#name(style='width:350px;')
br
input#field(style='width:350px;')
input#send(type='button', value='send')
接下來我們修改node.js文件
window.onload = function() {
var messages = [];
var socket = io.connect('http://localhost:3700');
var field = document.getElementById("field");
var sendButton = document.getElementById("send");
var content = document.getElementById("content");
var name = document.getElementById("name");
socket.on('message', function (data) {
if(data.message) {
messages.push(data);
var html = '';
for(var i=0; i<messages.length; i++) {
html += '<b>' + (messages[i].username ? messages[i].username : 'Server') + ': </b>';
html += messages[i].message + '<br />';
}
content.innerHTML = html;
} else {
console.log("There is a problem:", data);
}
});
sendButton.onclick = function() {
if(name.value == "") {
alert("Please type your name!");
} else {
var text = field.value;
socket.emit('send', { message: text, username: name.value });
}
};
}
如果聊天記錄框裏面的條數太多的話,用戶也可以加入如下代碼:content.innerHTML = html;
content.scrollTop = content.scrollHeight;
socket.emit('send', { message: text, username: name.value });
field.value = "";