Мне нужно создать протокол для клиент-серверного чата на Java. Я использую xml для кодирования сообщений между ними, но я не могу решить, как вернуть декодированные данные на сервер.Разработка протокола чата клиент-сервер Java
Первый раз, я создал много объектов implements IAction
(например, Auth
объект представляет собой пакет, о новом пользователе в чате), которые различаются в зависимости от их содержимого. Таким образом, когда сервер получает сокет, он называет мой public IAction decode(String s)
, а затем, сервер должен определить, какой объект он:
if (myIAction instanceof Auth) {
server.doMagicAuth((Auth) myIAction);
}
но это выглядело некрасиво меня сог из типажей и многие ИФЕС
Другой подход должен был создать один общий объект, называемый Packet
, который может содержать intValue
, floatValue
, stringValue
и т. д. А также у него был флаг, в котором говорилось о том, какой именно пакет. Но это была худшая идея coz коллизий. Например, как отправить 2 int, это этот пакет? например пароль и users_id?
И последняя идея состояла в том, чтобы наблюдать за сервером. У сервера должно быть много перегруженных методов public void action(IAction a)
(action(Auth a)
... и т. Д.), А протокол должен уведомлять сервер в зависимости от того, какой именно пакет он есть.
И я не могу решить, какой метод использовать. Может быть, у вас есть совершенно разные идеи?
XML - это ограничение моей лаборатории = ( И вопрос был в другом: как передавать декодированные данные на сервер из протокола – ovnia
Эти декодированные данные - это не что иное, как строка. Просто отправьте его на свой сервер так, как вам нравится Вызов метода, отправка события, почти все будет работать здесь: –
и еще раз, я не спрашиваю, как представлять мои данные в пакетах), это работа протокола. Я не могу решить, как представить декодированные данные на сервер. например 'Protocol' декодирует строку xml и понимает, что это пакет с новым сообщением от пользователя user123' user21', поэтому мне нужно попросить сервер отправить сообщение пользователю 'user21'. И вопрос «как попросить сервер сделать это?» на самом деле то, что я хотел знать) – ovnia