forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общее (http://forum.boolean.name/forumdisplay.php?f=139)
-   -   Java Sockets -> WebSockets (http://forum.boolean.name/showthread.php?t=20396)

RegIon 08.09.2016 13:04

Java Sockets -> WebSockets
 
Есть сервер, написан на Java сокетах .
Выдает Json, и принимает Json, но ясное дело нельзя так просто к нему подключиться с Web-приложений.

Вот как его так можно модифицировать, не сломав функционал и не переписывая тонну кода, что бы он работал как с обычными сокетами, так и веб-сокетами ?

Я в курсе что WebSocets - немного измененный HTTP/1.1, нашел небольшой гайд, но что-то он мне не особо помог.

https://developer.mozilla.org/en-US/...server_in_Java

Причем желательно вклиниться в поток до JsonReader / JsonWriter, а то он не пропускает не-JSON объекты.


Задачка вроде не сложная, но я вот не знаю как вклиниться в поток:dontknow:

Хотя есть идея удочерить самописный класс от FilterReader/Writer и писать/читать в нем заголовки и конвертировать прямо перегрузив методы write / read. Верно думаю?

RegIon 08.09.2016 13:53

Ответ: Java Sockets -> WebSockets
 
UPD, вклиниться не получиться. Нужно будет разделять логику. Эх.

h1dd3n 08.09.2016 19:03

Ответ: Java Sockets -> WebSockets
 
Если ты написал такие абстракции что нельзя подменить тип транспорта, то ты сам себе ССЗБ (если конечно это ты писал).
Есть tcp соединение, по которому идут данные (байты), ты эти байты как то интерпретируешь - ну, например, как текст-строку-json.
WebSocket - это то же самое tcp соединение, только во 1 вначале идут специальные http заголовки, и во 2 все сообщения (данные) упаковываются в специальную структуру. Другими словами - твой код не должен работать с сокетами - он должен работать с чем-то абстрактным, например, Stream. Если ты работаешь с потоком тебе не важно откуда пришли данные. Может это что-то вроде TCPStream, а может и WebSocketStream (который кстати работает поверх TCPStream).

RegIon 10.09.2016 14:12

Ответ: Java Sockets -> WebSockets
 
Я работал напрямую с потоками сокетов, что было не особо правильно, как я понял, но у меня обработчик сообщений не зависит от способа приема данных, главное ему json принимать-отдавать. Пришлось в итоге переписать некоторые места. Теперь только WebSockets, не знаю на сколько это плохо для моего напарника, который клиент пишет=)), но теперь я спокойно могу отладить его работу, написав минималистичный WEB-клиент


Часовой пояс GMT +4, время: 11:43.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot