【问题标题】:Is it possible to handle client and browser connections in a single application?是否可以在单个应用程序中处理客户端和浏览器连接?
【发布时间】:2016-08-15 14:38:24
【问题描述】:

让我解释一下我的问题,我找不到合适的方式来表达我的意思。

所以我创建了一个 Java 套接字服务器和一个客户端,它们可以毫无问题地进行通信。我想扩展服务器,使其能够与为此目的设计的网页进行通信,它具有客户端应用程序所做的所有输入,它是用 JSP 编写的,一切似乎都很好。

但是,我想问一下是否可以将 JSP 服务器“嵌入”到我的套接字服务器中?像这样: - 通过服务器套接字识别连接,并接受它。 - 然后,以某种方式,它应该确定接收到的连接是来自客户端应用程序还是来自浏览器页面。 - 最后,它应该以不同的方式处理请求,并以不同的格式发送响应。

所以基本上我可以在一个应用程序中执行此操作,或者我必须在 JSP 页面中编写处理,然后该页面将“伪造”一个客户端,该客户端连接到服务器并接收响应?

【问题讨论】:

  • 你可以在你的 JSP 中使用 websocket 来连接你的服务器。您的服务器可以区分 websocket 连接和非 websocket 连接并进行相应处理。如果你在你的服务器上使用 Netty 会容易很多。 keyholesoftware.com/2015/03/16/…

标签: java sockets jsp


【解决方案1】:

本质上客户端应用程序和浏览器是相同的东西。浏览器只是将 HTML 显示为页面并处理基本的 HTTP 请求。

由于您的问题非常抽象(您说您已经实现了纯套接字,本质上是 - Transport layer),因此很难为您提供准确的解决方案,但这里有两个想法:

1) 客户端应用程序可以使用不同的应用程序协议,即您自己的。而浏览器将使用 HTTP 之一。

2) 如果客户端也使用 HTTP 请求,唯一的区别方法是分析 User-Agent header

【讨论】:

  • 我忘了说客户端和服务端的通信是客户端发送一个JSONArray,数组的第一个元素是一个JSONObject,里面包含了客户端的序列化信息,比如IP地址,MAC地址,唯一ID,第二个元素也是序列化的特殊对象,一种服务器会解析并执行的“请求”。编辑(不小心按回车键):我想我会以某种方式解析浏览器发送的内容,通过这种方式,我可以开始以不同的方式处理它。是否有可用于解析原始 HTTP 请求的库?
  • 所以User-Agent 标题是你的子弹
猜你喜欢
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-20
  • 2013-09-24
  • 2012-05-24
  • 1970-01-01
相关资源
最近更新 更多