Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal, ultimamente eu venho querendo desenvolver um jogo simples, para mim e meus amigos jogar. Como eu sempre adorei jogos Browser, eu resolvi criar bem simples só para passar meu tempo e adquirir mais conhecimento, entretanto, resolvi cri-lo em PHP, JS(jQuery), HTML5 e CSS3. Funciona basicamente assim, o jogador movimenta uma nave pelo mapa, e pode encontrar inimigos(Outros jogadores online), esses inimigos no caso serão meus amigos, pois como eu disse, é uma coisa simples e não quero entupir de usuários. Ouvi falar a respeito do node.js, entretanto eu não tenho tantos conhecimentos de JS e então pesquisando mais afundo descobri os sockets no PHP. No caso estou utilizando o da própria linguagem socket_create() e não frameworks como o Ratchet. É possível desenvolver um game assim? Eu sei que da para fazer com jQuery.ajax(), entretando ficaria muito lento e seria uma má prática com certeza.
Eu criei uma página chamada servidor.php que contém o seguinte código:
<?php
ob_implicit_flush();
$host = "127.0.0.1";
$porta = 8080;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, $host, $porta);
socket_listen($socket);
echo "Esperando conexão com a porta: ".$porta;
$con = false;
switch(socket_select($r=array($socket),$w=array($socket),$e=array($socket),30)){
case 0:
echo "Tempo de espera terminou";
break;
case 1:
echo "Conectado na porta: ".$porta;
$con = socket_accept($socket);
break;
case 2:
echo "Não foi possível se conectar!";
break;
}
while(socket_recv($con,$resposta,1024,MSG_WAITALL)){
$tok = "testando";
if(socket_write($socket,$tok,strlen($tok))){
echo "Mensagem enviada!";
}else{
echo "Erro no envio do socket: ".socket_strerror(socket_last_error());
}
}
echo "
<script>
setTimeout(c, 1000);
function c(){
window.location.reload();
}
</script>
";
?>
E outra chamada cliente.php que contém os sockets HTML5:
var connection = new WebSocket('ws://127.0.0.1:8080/servidor.php');
connection.onopen = function () {
connection.send("Teste do socket");
}
connection.onmessage = function(){
alert("Chegou mensagem");
}
O servidor não deveria receber a mensagem "Teste do socket", depois enviar uma nova e o cliente iria receber "Chegou mensagem"? Se sim, isso não está funcionando, já quebrei a cabeça, estou a uns 2 dias tentanto resolver e não consigo. Precisa de algum tipo de chave de comunicação ou algo do tipo?
Alguém?