簡體   English   中英

將Websockets實現到我的Tomcat Servlet中?

[英]Implement Websockets into my Tomcat Servlet?

我試圖在我已經工作的servlet中使用websockets。 我的問題是我使用“編寫者”類將HTML發布到broswer上,但我找不到類似的WebSockets類。

我的servlet看起來像這樣:

@WebServlet("/TestServlet")

public class TestServlet extends HttpServlet {
private List<ISort> sortierListe = new ArrayList<ISort>();
private File file1;
private PrintWriter writer2;
private boolean sortFinished;
boolean bSubmitForFilenamePressedCopy;
BufferedReader in;
// private String sEingabe;
private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#HttpServlet()
 */
public TestServlet() {
    super();    
    this.initSortierverfahren();
}

private void initSortierverfahren() {
    sortierListe.add(new BubbleSort());
    sortierListe.add(new QuickSort());
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
 *      response)
 */
protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {

[...]

PrintWriter writer = response.getWriter();
    writer2 = writer;
    writer.println("<html>");
    writer.println("<head><title>Text Sortieren!</title>");
    writer.println("</head>");

    writer.println("<body marginwidth='40' leftmargin='40' bgcolor='#E5E5E5'>");

    writer.println("<table bgcolor='#FFFFFF' height='100%' width='57%' border='0' cellpadding=10>");
    writer.println("<tr height='10%'>");
    writer.println("
[...]

代碼太長而無法發布所有內容,但Servlet基本上創建了一個表單,我可以在其中輸入.txt文件的路徑。 然后將通過bubblesort或quicksort對txt文件進行排序。

我的問題是:如何在不重寫javascript中的所有內容的情況下在WebSocket中使用此代碼? 只是一些基本的幫助開始將幫助我很多我想。 提前致謝。

首先,如果要使用tomcat中的websockets,則應該從相應的基類WebSocketServlet擴展。

其次,我不認為在你的情況下使用websocket是值得的。 Websockets適用於需要實時交互的應用程序。 你的人顯然不需要它。

如果您仍想要這樣做,只需創建一些簡單的javascript,它會將您的html寫入正文。 與...有關的東西:

websocket = new WebSocket(wsUri); 
websocket.onmessage = function(evt) { 
  document.body.innerHtml += evt.data
};

但正如我所說,我認為在這樣的代碼中沒有用處。

在從普通servlet轉移到websocket之前,請記住幾件事。

  1. 使用最新的apache tomcat版本。 Plder版本不支持websockets。 (在我的情況下,我使用的是7.0.42版本)
  2. 您不能簡單地用WebSocket替換您的Servlet。 兩者的目的完全不同。 谷歌了解更多細節。

WebSocket示例代碼提供服務器端和客戶端示例代碼。 你應該參考它開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM