簡體   English   中英

WebSockets connection.send不起作用錯誤

[英]WebSockets connection.send not function error

我有一個Tornado客戶端應用程序,它在當前狀態下運行良好:在簡化版本中,它具有以下代碼段的結構:

function comms(callback, newSession, connection) {
     if (newSession == true) {
          connection = new WebSocket('ws://localhost:9022/id/01234');

          connection.onopen = function () {
               alert("connected");
               connection.send('hello world');
          };
     }

     connection.onerror = function (error) {
          alert('WebSocket Error ' + error);
     };


     connection.onmessage = function (e) {
          alert('>> message from Host: ' + e.data);
          callback(e.data, connection);
     }
}

我可以連接,可以檢測到連接已打開,可以發送消息。 我可以收到消息。 我可以通過回調函數轉發消息並返回。 沒問題。 所有這些都是通過以下方式完成的:

connection.onXXX事件處理函數。

現在,我想向服務器發送一些不請自來的消息,如下所示:

function comms(callback, newSession, connection, request=false) {
     if (newSession == true) {
          connection = new WebSocket('ws://localhost:9022/id/01234');

          connection.onopen = function () {
               alert("connected");
               connection.send('hello world');
          };
     }

     connection.onerror = function (error) {
          alert('WebSocket Error ' + error);
     };


     connection.onmessage = function (e) {
          alert('>> message from Host: ' + e.data);
          callback(e.data, connection);
     }

     if (request == true) {
          connection.send("request_msg");
     }
}

盡管連接已打開,但我無法發送這樣的請求消息。 我收到:“ connection.send不是函數”錯誤。

據我了解,發送請求必須以某種方式包裝到一個函數中,就像其他connection.onXXXX事件處理程序一樣。 但是我沒有任何此類事件或處理程序。

如何發送我的信息?

看來您需要在事件中執行此操作。

更新:

onmessage事件是在服務器端觸發的,因此任何客戶端處理都無法在該事件處理程序中完成。 我建議客戶端功能應在其他功能(不是comms)中處理。

根據此參考教程(對Websocket的介紹) ,只需從請求消息的客戶端的函數中調用發送請求即可。

就是 按照此處的教程示例,當提交表單/按下發送消息按鈕時,將調用請求。 所有這些都包裝在onload函數中。

因此,您需要一些可以調用套接字connection(socket).send()函數的客戶端事件或循環,只需傳遞文本即可。

這對您有幫助嗎?還是處於“復雜”狀態的應用程序已經實現了?

暫無
暫無

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

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