Bueno ba hamen gabiltzez node.js eta socket.io-gaz barriro be, 1go partie ikusteko hamen linke:
http://zital.hackinbadakigu.net/?p=273
functions.js:
module.exports =
{
in_array: function (needle, haystack, argStrict)
{
// Checks if the given value exists in the array
//
// version: 1109.2015
// discuss at: http://phpjs.org/functions/in_array // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: vlado houba
// + input by: Billy
// + bugfixed by: Brett Zamir (http://brett-zamir.me)
// * example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']); // * returns 1: true
// * example 2: in_array('vlado', {0: 'Kevin', vlado: 'van', 1: 'Zonneveld'});
// * returns 2: false
// * example 3: in_array(1, ['1', '2', '3']);
// * returns 3: true // * example 3: in_array(1, ['1', '2', '3'], false);
// * returns 3: true
// * example 4: in_array(1, ['1', '2', '3'], true);
// * returns 4: false
var key = '', strict = !! argStrict;
if (strict)
{
for (key in haystack)
{
if (haystack[key] === needle)
{
return true;
}
}
}
else
{
for (key in haystack)
{
if (haystack[key] == needle)
{
return true;
}
}
}
return false;
}
};
server.js:
var functions = require('./functions');
var users_available = ['zital', 'hqh'];
var clients = {};
var server = require("socket.io").listen(6969);
server.sockets.on("connection", function(message)
{
message.on("login", function(user)
{
if(functions.in_array(user, users_available))
{
clients[message.id] = message;
clients[message.id].emit("isLogged");
}
});
message.on("newMessage", function(data)
{
for(i in clients)
clients[i].emit("sendMessage", data);
});
message.on("logout", function()
{
var tmp = {};
for(i in clients)
{
if(i!=message.id)
tmp[i] = clients[i];
}
clients = tmp;
});
});
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Online chat</title>
<style>
body
{
color: #fff;
background: #333;
font-family: "Helvetica", Arial;
font-size: 14px;
text-align: center;
}
.container
{
background: #ccc;
border-radius: 1em;
box-shadow: 0px 5px 5px rgba(0,0,0,0.5);
text-shadow: 5px 5px 5px rgba(0,0,0,0.5);
margin: 1em auto;
padding: 1em;
width: 90%;
}
input
{
display: block;
font-size: 12px;
margin: 1em auto;
padding: 0.5em;
width: 95%;
}
span
{
display: block;
font-size: 12px;
margin: 1em auto;
padding: 0.5em;
width: 95%;
text-align: left;
}
</style>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="socket.io.js"></script>
<script type="text/javascript">
<!--
// IP PUBLIKUE IMI??I HAMEN
var websocket = io.connect("http://10.211.252.10:6969");
$(document).on('ready', function()
{
$('#f_user').css('display', 'none');
$('#f_message').css('display', 'none');
$('#login').trigger('focus');
websocket.on("isLogged", function()
{
var login = $('#login');
var user = login.val();
$('#f_user > label').html('welcome: '+user);
$('#f_user').css('display', 'block');
$('#f_message').css('display', 'block');
$('#f_login').css('display', 'none');
$('#message').trigger('focus');
});
websocket.on("sendMessage", function(data)
{
var chat = $('#zchat');
var span = $('<span>'+data+'</span>');
if (chat.children().length > 0 )
chat.find(">:first-child").before(span);
else
chat.append(span);
});
$('#f_user').on('submit', function(e)
{
e.preventDefault();
websocket.emit("logout", {});
$('#f_user').css('display', 'none');
$('#f_message').css('display', 'none');
$('#f_login').css('display', 'block');
});
$('#f_login').on('submit', function(e)
{
e.preventDefault();
websocket.emit("login", $('#login').val());
});
$('#f_message').on('submit', function(e)
{
e.preventDefault();
websocket.emit("newMessage", $('#message').val());
$('#message').val('');
$('#message').trigger('focus');
});
});
//-->
</script>
</head>
<body>
<div>
<form id="f_user">
<label></label>
<input type="submit" value="logout" />
</form>
<form id="f_login">
<label>login: </label>
<input type="text" name="login" id="login" required />
<input type="submit" />
</form>
<form id="f_message">
<label>Message: </label>
<input type="text" name="message" id="message" required />
<input type="submit" />
</form>
</div>
<div id="zchat">
</div>
</body>
</html>
socket.io.js:
http://pastebin.com/shJTm0JE
Oin martxan imintzeko:
server.js eta functions.js path bardiñen on bidiez, eta index.html eta socket.io.js bebai :)
node server.js
eta nabegadoretik index.html igiri
Non dau trukue? clients bariablien barruen sartutiegaz konektaten dizen erabiltzailiek, ta gero logout einkeran bertatik kendu.