我正在使用嵌入式jetty和spring來通過http與java進行java通信。我的問題是我的服務器應用程序必須處理同一端口上的普通TCP消息。使用jetty接收非Http消息
有沒有辦法來檢測到一個TCP消息是否到達了servlet無法處理的地步?
謝謝你的答案我想補充一些細節:
- 我不能修改客戶端。原因是舊版本的客戶端使用純java tcp套接字,結果證明新服務器必須向後兼容舊客戶端。
- 必須使用相同的端口
- 舊客戶端消息是簡單套接字上的短序列化文本。 1:打開連接,2:發送文本,3:關閉連接
- 我的服務器看起來像這樣:http://kielczewski.eu/2013/11/using-embedded-jetty-spring-mvc/
- 我不需要解析消息。檢測到消息已到達,而不是使用http並獲取源主機名就足夠了。
您提出的任何解決方案都需要您自己的高度自定義的「ServerConnector」實現來預先分析傳入的信息,以瞭解其HTTP/0.9,HTTP/1.0,HTTP/1.1,HTTP/2或Raw TCP,然後在Jetty(對於http)或您的應用程序(如果不是http)中調用適當的圖層。出於好奇,爲什麼不使用WebSocket呢? –