Я исследовал и сейчас внедряю клиента как удаленный объект (определяя интерфейс и реализуя его).Я думаю, что это называется обратным вызовом.Я на правильном пути?
RMI обычно реализуется как клиент и сервер.Клиент делает вызовы на сервере, который возвращает объект, который может быть использован на клиенте.Прочитав комментарии, они верны, что, учитывая то, как вы описали проблему, вам нужно будет сделать клиент также сервером RMI.Однако я не уверен, что это необходимо.
Например, предположим, у вас есть 2 клиента, которые оба пытаются сыграть в игру.Протокол может выглядеть примерно так:
- A связывается с сервером S. Сервер сохраняет адрес A, а затем возвращает сообщение типа «ожидающий другого игрока» на A.
- A затем связывается с S каждые пару секунд, чтобы узнать, появился ли другой игрок.
- B, затем связывается с S, и начинается игра между A и B. S возвращает сообщение о начале игры в магазины B. Sнекоторый объект Game в его памяти (и / или на диске), который отслеживает ход игры.
- В следующий раз, когда A обращается к серверу, он также получает сообщение о запуске игры.
Таким образом, вместо того, чтобы серверу нужно было связываться с A или B, они время от времени опрашивают, чтобы получать обновления игры и тому подобное.
Вызовы метода для S также могут ждать другого игрока и не возвращатьсяпока есть один.Однако я думаю, что вариант опроса лучше, потому что тогда S знает, перестает ли A звонить, и A не нужно беспокоиться о сбое и зависании S.
Надеюсь, это поможет.