Перенос веб-приложения Ajax в веб-сокет

Думаю, мне просто не хватает одной маленькой детали, которая мешает мне видеть всю картину.

У меня есть веб-приложение, которое каждый раз использует запрос ajax для обновления клиента новой информацией или задачами.

У меня также есть длительный процесс на сервере, который является механизмом вычислений Java. Я бы хотел, чтобы этот движок отправлял обновление клиенту.

  1. Мне интересно, как перенести мое веб-приложение на использование websocket. Возможно, phpwebsocket или аналогичный. Может ли мой сервер «решить» отправить информацию конкретному клиенту? Кажется возможным, глядя на php-websocket.

  2. Может ли мой длинный процесс java backend использовать сервер websocket для отправки уведомления определенному клиенту. Как? ну, я могу сказать, что мое приложение Java могло бы использовать класс, который мог бы отправлять через websocket вместо http.

Но как сервер websocket знает, какому клиенту послать «информацию». Я озадачен всем этим. Любой документ, который объясняет это более подробно? Кажется, что веб-сокет может создать экземпляр моего веб-приложения.

Спасибо


person Bastan    schedule 08.01.2011    source источник
comment
fyi- некоторые недавние проблемы безопасности с веб-сокетами, которые вы, возможно, захотите прочитать, прежде чем писать код.   -  person goat    schedule 08.01.2011


Ответы (1)


Ваш сервер, который будет иметь произвольное количество активных клиентских сокетов, решает, в какие из них писать (возможно, в ответ на ввод от пользователя).

phpwebsocket (который все еще очень грубый) имеет _ 2_ с полями $id, $socket (это базовый сокет TCP) и $handshake. Вы можете расширить этот класс дополнительными метаданными о User (например, идентификатором вычисления). Или вы можете использовать отображение массива из идентификатора вычисления в User.

Возможно, когда Java-вычисления n завершатся, вы сможете найти сокет, связанный с этим вычислением, и записать в его сокет.

person Matthew Flaschen    schedule 08.01.2011
comment
Мое вычисление Java может выполнить POST в ws: // mydomain / mysocketapp? User = xx; msg = completed. Затем веб-сокет найдет соответствующего пользователя / сокет и отправит пользователю эхо-сообщение. - person Bastan; 10.01.2011
comment
Имейте в виду, что веб-сокеты не используют HTTP после подключения, если вы не реализуете HTTP через веб-сокет. Вам не обязательно использовать веб-сокеты для связи между вашим сервером и серверной частью Java. Вы можете использовать другую форму межпроцессного взаимодействия. - person Matthew Flaschen; 11.01.2011
comment
Любой указатель межпроцессного взаимодействия, на который я мог бы посмотреть и узнать больше? - person Bastan; 11.01.2011
comment
@Bastan, общую информацию можно найти в статье ipc в Википедии. Существует вопрос StackOverflow, касающийся взаимодействия между программами PHP и Java. Как отмечается, вы можете использовать обычный HTTP (с сервером и клиентом на локальном хосте), TCP-сокеты (которые предварительно -существуют и фактически подкладывают WebSocket и имеют лучшую документацию). Также существует инструмент под названием php / java bridge. - person Matthew Flaschen; 12.01.2011
comment
Большой! Спасибо за информацию. Я как раз читал нечто подобное на mindprod.com/jgloss/remotefileaccess.html - person Bastan; 12.01.2011