我有一个基本的聊天室,可以检测用户何时连接到服务器并离开。
现在我想在用户加入服务器时提示用户输入用户名,我该怎么做?
代码如下:
索引.html
<html>
<head>
<script src="http://localhost:3000/socket.io/socket.io.js"></script>
<script type="text/javascript" charset="utf-8">
var socket = io.connect('http://localhost:3000');
socket.on('entrance', function (data) {
document.write('<p>' + data.message + '</p>');
//STORE USERNAME of NEW SOCKET
// on connection to server, ask for user's name with an anonymous callback
socket.on('connect', function(){
// call the server-side function 'adduser' and send one parameter (value of prompt)
socket.emit('adduser', prompt("What's your name?"));
});
});
socket.on('exit', function (data) {
document.write('<p>' + data.message + '</p>');
});
socket.on('chat', function (data) {
document.write('<p>' + data.message + '</p>');
});
</script>
</head>
<body>
</body>
</html>
服务器.js
var io = require('socket.io'),
connect = require('connect');
var app = connect().use(connect.static('public')).listen(3000);
var game_room = io.listen(app);
game_room.sockets.on('connection', function (socket) {
socket.emit('entrance', {message: 'Welcome to the chat room!'});
socket.emit('entrance', {message: 'Your ID is #' + socket.id});
socket.on('disconnect', function () {
game_room.sockets.emit('exit', {message: 'A chatter has disconnected.'});
});
socket.on('chat', function (data) {
game_room.socket.broadcast.emit('chat', {message: '# ' + data.message});
});
socket.broadcast.emit('entrance', {message: 'A new chatter is online.'});
});