Javascript socket.io登录系统必须刷新窗口
我正在编写一个简单的登录系统。用户必须引入昵称,无需密码。如果已选择昵称,则通知用户soI used alert。如果昵称是免费的,用户会被告知是免费的。我正在服务器中使用express。以及服务器和客户端中的socket.io。 这东西或多或少起作用了 正如你所看到的,它是有效的。 但是如果我引入了一个无效的名称,表单就会被禁用。我的意思是,如果a想再次发送昵称,我必须重新加载页面。 以下是客户端的代码:Javascript socket.io登录系统必须刷新窗口,javascript,node.js,sockets,socket.io,Javascript,Node.js,Sockets,Socket.io,我正在编写一个简单的登录系统。用户必须引入昵称,无需密码。如果已选择昵称,则通知用户soI used alert。如果昵称是免费的,用户会被告知是免费的。我正在服务器中使用express。以及服务器和客户端中的socket.io。 这东西或多或少起作用了 正如你所看到的,它是有效的。 但是如果我引入了一个无效的名称,表单就会被禁用。我的意思是,如果a想再次发送昵称,我必须重新加载页面。 以下是客户端的代码: 你可以在下面的答案中发布你是如何做到的,而不是在你的问题中添加[已解决]。我本来打算这么
你可以在下面的答案中发布你是如何做到的,而不是在你的问题中添加[已解决]。我本来打算这么做的。
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Demo</title>
<style type="text/css">
body {
margin: 5%;
}
</style>
</head>
<body>
<script src="https://cdn.socket.io/socket.io-1.3.4.js"></script>
<script>
var socket = io();
var send_nickname =
function()
{
socket.emit('msg', document.text_box.nickname.value);
// check
socket.on('login', function(msg){
if(msg == 'ok')
{
//muy bien
alert("You logged in as " + document.text_box.nickname.value);
}
else
{
alert("The nickname " + document.text_box.nickname.value + " is already chosen");
}
});
};
</script>
<h1> Introduce your name </h1>
<form action="javascript:send_nickname()" name="text_box">
nickname: <input type="text" name="nickname"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var playerToSocket = {};
var socketToPlayer = {};
app.get('/', function(req, res){
res.sendfile('index.html');
});
app.get('/index.html', function(req, res){
res.sendfile('index.html');
});
io.on('connection', function(socket){
console.log('a user connected');
var name = '';
socket.on('msg', function(msg){
// First of all, the client must choose a nick name
if(name == ''){
name = msg;
if(playerToSocket[name] == null){
// reserve the name
playerToSocket[name] = socket;
socketToPlayer[socket] = name;
console.log("New player: " + name);
// send on success
socket.emit('login', 'ok');
}
else{
console.log("The nickname is already chosen.");
// send on fail
socket.emit();
socket.emit('login', 'fail');
}
}
});
socket.on('disconnect', function(){
name = socketToPlayer[socket];
console.log('user disconnected: ' + name);
socketToPlayer[socket] = null;
playerToSocket[name] = null;
});
});
http.listen(5555, function(){
console.log('listening on *:5555');
});