Javascript 使用斑点的网袋。WSS
我尝试使用安全层WSS创建简单的聊天应用程序。没有wss,它就可以工作。这是我的密码:Javascript 使用斑点的网袋。WSS,javascript,websocket,wss,Javascript,Websocket,Wss,我尝试使用安全层WSS创建简单的聊天应用程序。没有wss,它就可以工作。这是我的密码: FleckLog.Level = LogLevel.Info; var allsockets = new List<IWebSocketConnection>(); var server = new WebSocketServer("wss://localhost:8181"); server.Certificate = new X5
FleckLog.Level = LogLevel.Info;
var allsockets = new List<IWebSocketConnection>();
var server = new WebSocketServer("wss://localhost:8181");
server.Certificate = new X509Certificate2(@"C:\Users\user\Desktop\sharpchat-master\server\Sharpchat\Certificate.pfx", "123");
server.Start(socket =>
{
socket.OnOpen = () =>
{ //See socket.ConnectionInfo.* for additional informations
Console.WriteLine(String.Empty);
Console.WriteLine("[NEW CLIENT CONNECTION]======================");
Console.WriteLine("GUID: " + socket.ConnectionInfo.Id);
Console.WriteLine("IP: " + socket.ConnectionInfo.ClientIpAddress);
Console.WriteLine("Port: " + socket.ConnectionInfo.ClientPort);
Console.WriteLine("=============================================");
Console.WriteLine(String.Empty);
allsockets.Add(socket);
};
socket.OnClose = () =>
{
Console.WriteLine(String.Empty);
Console.WriteLine("[DISCONNECTED CLIENT]=======================");
Console.WriteLine("GUID: " + socket.ConnectionInfo.Id);
Console.WriteLine("IP: " + socket.ConnectionInfo.ClientIpAddress);
Console.WriteLine("Port: " + socket.ConnectionInfo.ClientPort);
Console.WriteLine("=============================================");
Console.WriteLine(String.Empty);
allsockets.Remove(socket);
};
socket.OnMessage = (message) =>
{
//TODO: Json.Net Deserialize
Console.WriteLine("[JSON MESSAGE] " + message);
allsockets.ToList().ForEach(s => s.Send(message));
};
});
var input = Console.ReadLine();
while (input != "exit")
{
foreach (var socket in allsockets.ToList())
{
socket.Send(input);
}
input = Console.ReadLine();
}
FleckLog.Level=LogLevel.Info;
var allsockets=新列表();
var server=新的WebSocketServer(“wss://localhost:8181");
server.Certificate=new X509Certificate2(@“C:\Users\user\Desktop\sharpchat master\server\sharpchat\Certificate.pfx”,“123”);
server.Start(套接字=>
{
socket.OnOpen=()=>
{//有关更多信息,请参见socket.ConnectionInfo.*
Console.WriteLine(String.Empty);
Console.WriteLine(“[新客户端连接]===============================”);
Console.WriteLine(“GUID:+socket.ConnectionInfo.Id”);
Console.WriteLine(“IP:+socket.ConnectionInfo.ClientIpAddress”);
Console.WriteLine(“端口:”+socket.ConnectionInfo.ClientPort);
Console.WriteLine(“================================================================”);
Console.WriteLine(String.Empty);
allsockets.Add(socket);
};
socket.OnClose=()=>
{
Console.WriteLine(String.Empty);
Console.WriteLine(“[断开连接的客户端]===============================”);
Console.WriteLine(“GUID:+socket.ConnectionInfo.Id”);
Console.WriteLine(“IP:+socket.ConnectionInfo.ClientIpAddress”);
Console.WriteLine(“端口:”+socket.ConnectionInfo.ClientPort);
Console.WriteLine(“================================================================”);
Console.WriteLine(String.Empty);
所有插座。拆下(插座);
};
socket.OnMessage=(消息)=>
{
//TODO:Json.Net反序列化
Console.WriteLine(“[JSON消息]”+消息);
allsockets.ToList().ForEach(s=>s.Send(message));
};
});
var input=Console.ReadLine();
while(输入!=“退出”)
{
foreach(allsockets.ToList()中的var socket)
{
socket.Send(输入);
}
input=Console.ReadLine();
}
当客户端连接到服务器时,出现异常:
[Warn] Failed to Authenticate System.AggregateEx
ception: One or more errors occurred. ---> System.IO.IOException: The handshake
failed due to an unexpected packet format.
at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncRes
ult lazyResult)
at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result)
at System.Net.Security.SslStream.EndAuthenticateAsServer(IAsyncResult asyncRe
sult)
at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar,
Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchron
ization)
--- End of inner exception stack trace ---
---> (Inner Exception #0) System.IO.IOException: The handshake failed due to an
unexpected packet format.
at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncRes
ult lazyResult)
at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result)
at System.Net.Security.SslStream.EndAuthenticateAsServer(IAsyncResult asyncRe
sult)
at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar,
Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchron
ization)<---
[Warn]无法对System.AggregateEx进行身份验证
异常:发生了一个或多个错误。-->System.IO.IOException:握手
由于意外的数据包格式而失败。
位于System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncRes
(结果)
位于System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult结果)
位于System.Net.Security.SslStream.EndAuthenticateAsServer(IAsyncResult asyncRe
苏丹)
在System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar,
Func`2 endFunction,Action`1 endAction,Task`1 Promission,布尔要求同步
(二)
---内部异常堆栈跟踪的结束---
--->(内部异常#0)System.IO.IOException:由于发生错误,握手失败
意外的数据包格式。
位于System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncRes
(结果)
位于System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult结果)
位于System.Net.Security.SslStream.EndAuthenticateAsServer(IAsyncResult asyncRe
苏丹)
在System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar,
Func`2 endFunction,Action`1 endAction,Task`1 Promission,布尔要求同步
(a)在URL中使用完整域名,即var URL=wss://localhost.company.com:8181';
- 允许从localhost@加载的资源使用无效证书
// Websocket Endpoint url
var URL = 'wss://localhost:8181';
var chatClient = null;
function connect () {
chatClient = new WebSocket(URL);
chatClient.onmessage = function (event) {
var messagesArea = document.getElementById("messages");
var jsonObj = JSON.parse(event.data);
var message = "<"+ jsonObj.user + "> " + jsonObj.message + "\r\n";
messagesArea.value = messagesArea.value + message;
messagesArea.scrollTop = messagesArea.scrollHeight;
};
}
function disconnect () {
chatClient.close();
}
function sendMessage() {
var user = document.getElementById("userName").value.trim();
if (user === "")
alert ("Please enter your name!");
var inputElement = document.getElementById("messageInput");
var message = inputElement.value.trim();
if (message !== "") {
var jsonObj = {"user" : user, "message" : message};
chatClient.send(JSON.stringify(jsonObj));
inputElement.value = "";
}
inputElement.focus();
}