Доброго всем времени суток.
Занимаюсь дипломной работой. Суть работы - реализовать что-то похожее на нормальные мессенджеры по типу Viber ну или что бы хоть с виду было похоже : )
Главное, что знаниями миллиардов фреймворков я не обладаю и во времени сильно ограничен, по-этому нужно
сделать простую реализацию но при этом вменяемую.
Изучаю книгу Professional Java for Web applications.
там в 10-й главе есть пример демонстрации работы дуплексного общения между клиентом и сервером средством использования соккетов.
На стороне сервера создаётся class TicTacToeServer.java в котором и прописаны все методы работы на стороне сервера.
@ServerEndpoint("/ticTacToe/{gameId}/{username}")
public class TicTacToeServer
{
@OnOpen
public void onOpen(Session session, @PathParam("gameId") long gameId,
@PathParam("username") String username)
{
//Обработка события
}
@OnMessage
public void onMessage(Session session, String message,
@PathParam("gameId") long gameId)
{
//Обработка события
}
@OnClose
public void onClose(Session session, @PathParam("gameId") long gameId)
{
//Обработка события
}
Далее, со стороны клиента имеем обычную JSP страничку в которой прописан JS скрипт.
В этом скрипте, собственно, прописана вся работа с соккетами.
var move;
$(document).ready(function() {
var modalError = $("#modalError");
var modalErrorBody = $("#modalErrorBody");
var modalWaiting = $("#modalWaiting");
var modalWaitingBody = $("#modalWaitingBody");
var modalGameOver = $("#modalGameOver");
var modalGameOverBody = $("#modalGameOverBody");
var opponent = $("#opponent");
var status = $("#status");
var opponentUsername;
var username = '<c:out value="${username}" />';
var myTurn = false;
$('.game-cell').addClass('span1');
if(!("WebSocket" in window))
{
modalErrorBody.text('WebSockets are not supported in this ' +
'browser. Try Internet Explorer 10 or the latest ' +
'versions of Mozilla Firefox or Google Chrome.');
modalError.modal('show');
return;
}
modalWaitingBody.text('Connecting to the server.');
modalWaiting.modal({ keyboard: false, show: true });
var server;
try {
server = new WebSocket('ws://' + window.location.host +
'<c:url value="/ticTacToe/${gameId}/${username}"><c:param name="action" value="${action}" /></c:url>');
} catch(error) {
modalWaiting.modal('hide');
modalErrorBody.text(error);
modalError.modal('show');
return;
}
server.onopen = function(event) {
//Обработка события
};
window.onbeforeunload = function() {
//Обработка события
};
server.onclose = function(event) {
//Обработка события
};
server.onerror = function(event) {
//Обработка события
};
server.onmessage = function(event) {
//Обработка события
};
move = function(row, column) {
if(!myTurn) {
modalErrorBody.text('It is not your turn yet!');
modalError.modal('show');
return;
}
if(server != null) {
server.send(JSON.stringify({ row: row, column: column }));
$('#r' + row + 'c' + column).unbind('click')
.removeClass('game-cell-selectable')
.addClass('game-cell-player game-cell-taken');
toggleTurn(false);
} else {
modalErrorBody.text('Not connected to came server.');
modalError.modal('show');
}
};
});
Так как у меня клиент будет на Android то мне нужно реализовать на андроидовской java что-то такое, что по функционалу будет аналогично или лучше чем в выше приведённом скрипте.
Вопрос какими путями это реализуется?
Если у вас есть более логичные предложения и(или) моя идея бред то буду рад читать ваши предложения так как я залез в дебри в которых очень мало понимаю. Если честно то я вообще не знаю как писать мессенджеры и пытаюсь найти что-то, что поставит меня на верную колею.
Спасибо за внимание!