我的websocket代碼間歇性地不發送數據,我有一些問題...因爲它已經寫了一個處理websocket並打印標籤的小型C#服務器。WebSocket不發送數據
在我的電腦上運行代碼時,它每次都能正常工作,但是當我在其他兩臺電腦上嘗試過時出現問題。
我設置一些數據包嗅探軟件,我似乎看到了如下內容:
當應用程序的工作...瀏覽器創建到完成手抖動服務器的連接。一旦完成websocket.onopen事件觸發。在這個事件中,我將數據發送到服務器(我可以在網絡監視器中看到),然後在關閉websocket之前檢查緩衝的數據。
當應用程序無法正常工作...發生完全相同的事情,但我無法看到網絡監視器中的數據。握手在那裏,onopen事件觸發並關閉連接,但沒有數據通過網絡發送...
我在客戶端和服務器端都安裝了網絡監視器,兩臺計算機都不能看到丟失的數據。
任何人都可以在我的代碼下面看到任何問題?沒有人知道這是否是一個錯誤?
我寫的代碼如下:
var _socket;
function sendXmlToLabelPrinter(strXML)
{
if (_socket == null)
{
console.log("creating socket");
_socket = new WebSocket("ws://127.0.0.1:50/"); // LOCAL
_socket.binaryType = "arraybuffer";
_socket.onopen = function()
{
console.log("socket opened");
if (_socket.readyState == WebSocket.OPEN)
{
try
{
_socket.send(strXML);
}
catch (ex)
{
console.log("an error occured when sending");
console.log(ex);
}
var intClose = setInterval
(
function()
{
console.log("checking socket buffer");
if (_socket.bufferedAmount == 0)
{
console.log("closing socket");
_socket.close();
_socket = null;
clearTimeout(intClose);
}
},
250
);
hideUserMessage();
}
else
{
console.log("socket not ready");
}
};
_socket.onerror = function(myErr)
{
console.log("error connecting to label printer, set timer to try again");
_socket.close();
_socket = null;
showUserMessage("Error: Please check label printer is running (Retrying in 5s)");
setTimeout(function(){hideUserMessage()}, 2000);
setTimeout(function(){sendXmlToLabelPrinter(strXML)}, 5000);
};
}
else
{
console.log("socket is in use, set timer to retry");
setTimeout(function(){sendXmlToLabelPrinter(strXML)}, 250);
}
}
在其他兩臺計算機上,您是否將websocket URL更改爲指向C#服務器的地址? 127.0.0.1是本地主機,你應該看看你的服務器的實際IP地址是什麼,並在腳本中使用該地址。 –
嗨,大家好。感謝您的建議。 IP地址如預期的那樣。 Web應用程序通過我寫的迷你服務器應用程序打印到本地打印機。我試過使用本地主機和跨計算機運行應用程序(因爲網絡監視器無法嗅探本地數據包),問題依然存在......它可能是Windows內部的網絡問題,但它不是由我使用的IP地址引起的。乾杯 – user3207501
我不確定我瞭解你的設置!是否有一臺計算機運行C#服務器,並且所有其他計算機都試圖連接到該服務器?還是有一臺C#服務器在每臺機器上運行? –