[英]C# Websocket server not receiving messages from HTML5 client
我正在嘗試創建一個簡單的websocket聊天室服務器。 我的客戶端能夠連接到服務器,但是即使服務器處於偵聽狀態,也無法將消息發送到服務器。
當客戶端連接時,一堆看起來像標題信息的東西將被寫入控制台。 但是,當用Javascript執行WebSocket.send()時,服務器端不會發生任何事情。
HTML:
<button id="closeSocket">disconnect</button><br />
<input id = "inputField" /><button id="sendMessage">send</button>
<div id = "output"></div>
<script type = 'text/javascript' src = 'websockets.js'></script>
Javascript:
websocket = new WebSocket("ws://127.0.0.1:80");
document.getElementById("closeSocket").onclick = closeSocket;
document.getElementById("sendMessage").onclick = sendMessage;
websocket.onopen = function(){
output("connected");
}
function sendMessage(){
output("sent: " + document.getElementById('inputField').value);
websocket.send(document.getElementById('inputField').value);
}
websocket.onmessage = function(e){
output("got response: " + e.data);
}
function closeSocket(){
websocket.close();
}
websocket.onclose = function(){
output("disconnected");
}
function output(t){
document.getElementById("output").innerHTML += t + "<br />";
}
C#服務器:
using System;
using System.Net;
using System.Net.Sockets;
namespace WebSocketsTutorial {
class Program {
static void Main(string[] args) {
TcpListener server = new TcpListener(IPAddress.Parse("127.0.0.1"), 80);
TcpClient client = default(TcpClient);
server.Start();
Console.WriteLine("server started");
while (true) {
client = server.AcceptTcpClient();
byte[] receivedBuffer = new byte[100];
NetworkStream stream = client.GetStream();
stream.Read(receivedBuffer, 0, receivedBuffer.Length);
foreach (byte b in receivedBuffer) {
Console.Write(Convert.ToChar(b).ToString());
}
}
}
}
}
這是客戶端連接時控制台上輸出的內容:
我主要要做的是允許任意數量的連接,並最終讓服務器向所有連接的客戶端回顯用戶的提交。
首先,WebSocket不僅僅是普通的套接字。 它使用HTTP和您需要使用的自己的框架協議定義連接握手。
https://zh.wikipedia.org/wiki/WebSocket
https://developer.mozilla.org/zh-CN/docs/Web/API/WebSockets_API/Writing_WebSocket_servers
其次,您僅讀取請求的前100個字節。 您應該讀取,直到Read
操作返回0。
您可以使用許多組件來創建WebSocket服務器,包括默認的組件: https : //docs.microsoft.com/zh-cn/aspnet/core/fundamentals/websockets
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.