WebSocketSharp 未找到具有指定路径的 WebSocket 服务
Posted
技术标签:
【中文标题】WebSocketSharp 未找到具有指定路径的 WebSocket 服务【英文标题】:WebSocketSharp A WebSocket service with the specified path isn't found 【发布时间】:2016-08-16 16:53:21 【问题描述】:我正在尝试使用websocket-sharp 创建一个简单的 C# websocket 服务器 我按照官方指南进行操作,但得到了一些奇怪的回复。
C# 代码段
using System;
using WebSocketSharp.Server;
namespace WebSocketSharp
class MainClass
public static void Main(string[] args)
startServer();
public static void startServer()
var ws = new WebSocketServer(System.Net.IPAddress.Any, 8181);
ws.Start();
Console.WriteLine("Server started");
Console.ReadKey(true);
ws.Stop();
Console.WriteLine("Server stopped");
当我尝试将我的客户端 (html) 连接到服务器时,我收到了一条消息
与“ws://127.0.0.1:8181/”的 WebSocket 连接失败:WebSocket 握手期间出错:意外响应代码:501
这同时出现在我的终端上
根据HTTP Protocol,代码501表示
服务器不支持完成请求所需的功能。当服务器无法识别请求方法并且无法支持任何资源时,这是适当的响应。
这是我的客户端代码,我相信它符合请求方法。
<!doctype html>
<head>
</head>
<body>
<form>
<input id="textField1" type="text" style="margin: 0 5px; width: 200px; height: 40px;" placeholder="Enter data">
<button id="sendTextField1" type="button" class="btn btn-info">Send</button>
</form>
<script type="text/javascript">
var start = function ()
var wsImpl = window.WebSocket || window.MozWebSocket;
window.ws = new wsImpl('ws://127.0.0.1:8181/');
ws.onmessage = function (evt)
console.log(evt.data);
;
ws.onopen = function ()
console.log("Connected");
;
ws.onclose = function ()
console.log("Closed");
;
document.getElementById("sendTextField1").onclick = function()
sendToSocket(document.getElementById('textField1').value);
;
function sendToSocket(value)
console.log("Sending value to socket " + value + " ");
ws.send(value);
;
window.onload = start;
谁能告诉我我的错误在哪里?
【问题讨论】:
你试过 urlws://127.0.0.1:8181
(不带斜线)吗?
没用....
【参考方案1】:
我认为问题在于您没有向服务器添加行为。我做了这里文档中提到的“laputa”事情:https://github.com/sta/websocket-sharp。
不要忘记连接到正确的端点。在示例中,端点是“/laputa”,因此您必须在您的 javascript 中连接,例如:
var socket = new WebSocket('ws://127.0.0.1:8081/laputa');
【讨论】:
我有同样的问题,但我创建了一个类 ServerSocket : WebSocketBehavior,并创建了一个重写方法 OnOpen OnError OnClose 和 OnMessage。是否必须使它像您发送的 gh 样品中的一样?我的意思是,我输入了像ws.OnClose += (sender, e) => ... ;
这样的事件吗?【参考方案2】:
您需要添加一个继承自 WebSocketBehavior 的类,我不确定没有它该库能否正常工作。
但该示例对我不起作用,我必须在 添加行为之前调用 server.Start()。
【讨论】:
【参考方案3】:我认为这会有所帮助,因为问题的核心是关于如何设置 WebSocket 服务器并与客户端进行一些基本交换。这段最少的代码创建了本地服务器和客户端,它们执行原始交换以演示它们之间的基本通信:
using System;
using WebSocketSharp;
using WebSocketSharp.Server;
namespace ConsoleApp1
public class ConsoleApplication
public class ServerService : WebSocketBehavior
protected override void OnMessage(MessageEventArgs e)
Console.WriteLine("I, the server, received: " + e.Data);
Send("I, the server, send you this!");
public static void Main(string[] args)
// Server
var wssv = new WebSocketServer(1236);
wssv.AddWebSocketService<ServerService>("/service");
wssv.Start();
Console.WriteLine("Server is setup.");
Console.ReadLine();
// Client
var ws = new WebSocket("ws://127.0.0.1:1236/service");
ws.OnMessage += (sender, e) => Console.WriteLine("I, the client, received: " + e.Data);
ws.Connect();
Console.WriteLine("Client is setup.");
Console.ReadLine();
// The client sends a message to the server:
ws.Send("Server, please send me something!");
Console.ReadLine();
【讨论】:
以上是关于WebSocketSharp 未找到具有指定路径的 WebSocket 服务的主要内容,如果未能解决你的问题,请参考以下文章
未指定 authenticationScheme,并且没有找到具有默认身份验证和自定义授权的 DefaultChallengeScheme
Xamarin Android 问题通过 HTTPS 连接到具有自签名证书的站点:“未找到证书路径的信任锚。”
未找到具有提供的路径的文件:build.不会上传任何工件。 - 将 React App 部署到 Firebase 的 Github Action