我正在使用最新版本的Chrome(websocket版本13)進行測試。Websocket服務器,客戶端無法握手
這裏的位於我簡單的客戶端頁面在http://127.0.0.1/folder/default.aspx
:
<script type="text/javascript">
var socket = new WebSocket('ws://localhost:8181/websession');
socket.onopen = function() {
alert('handshake successfully established. May send data now...');
};
socket.onclose = function() {
alert('connection closed');
};
socket.onmessage = function(msg) {
alert(msg);
};
</script>
這是我的監聽器(C#)
var listener = new TcpListener(IPAddress.Loopback, 8181);
listener.Start();
while (true)
{
Console.WriteLine("Listening...");
using (var client = listener.AcceptTcpClient())
using (var stream = client.GetStream())
using (var reader = new StreamReader(stream))
using (var writer = new StreamWriter(stream))
{
writer.WriteLine("HTTP/1.1 101 Web Socket Protocol Handshake");
writer.WriteLine("Upgrade: WebSocket");
writer.WriteLine("Connection: Upgrade");
writer.WriteLine("WebSocket-Origin: http://127.0.0.1");
writer.WriteLine("WebSocket-Location: ws://localhost:8181/websession");
writer.WriteLine("");
}
Console.WriteLine("Finished");
}
當我運行的服務器,然後加載客戶端頁面,只說:"connection closed"
。
請問有人能告訴我如何讓握手正確執行嗎?據我從文檔和以前的問題中可以看出,我發回客戶端的響應看起來是正確的。
你有沒有通過代碼加強了嗎?它是否停在某個點 –
我已經走過了,但有點不確定我應該在尋找什麼。所有的代碼似乎都按照我預期的那樣運行。 –
另外 - 是不是「交換協議」的狀態?有很多事情在迴應中看起來不正確。 –