我正在使用Microsoft.Web.WebSockets
,如下所示,我如何在连接上分配哪个用户连接而不在查询字符串中设置他的id,我在服务器中有一个属性项,但在客户端我不能找到类似的东西。
这是我的服务器:
using System.Linq;
using Microsoft.Web.WebSockets;
namespace TestSocket
{
public class TestWebSocketHandler : WebSocketHandler
{
private static WebSocketCollection clients = new WebSocketCollection();
private string name;
public override void OnOpen()
{
this.name = this.WebSocketContext.QueryString["name"];
var a = this.WebSocketContext.Items["test"];
var all = clients.Where(n => ((TestWebSocketHandler)n).name == this.name);
if (all.Count() > 0)
{
clients.Remove((TestWebSocketHandler)all.ToList()[0]);
}
clients.Add(this);
}
public override void OnMessage(string message)
{
// WebSocketPacket webso = JsonConvert.DeserializeObject<WebSocketPacket>(message);
// WebSocketPacket response = new WebSocketPacket();
var channel = clients.FirstOrDefault(n => ((TestWebSocketHandler)n).name == message);
if (channel != null)
channel.Send("test 123");
}
public override void OnClose()
{
clients.Remove(this);
}
}
}
这是我的客户:
var ws = new WebSocket("ws://localhost:30455//ws.ashx");
ws.Connect();
ws.Send("BALUS");
如何加密服务器和客户端之间发送的数据?
答案 0 :(得分:0)
如何在连接时分配哪个用户正在连接而不在查询字符串中设置其ID
使用HTTP GET
请求执行WebSocket连接握手。在GET
请求中,只有两种方法可以将自定义数据传递到HTTP服务器 - 通过URL查询字符串,以及通过自定义HTTP标头。大多数WebSocket客户端库不允许您在WebSocket握手期间指定自定义HTTP标头,因此只留下URL查询字符串(如果您编写自己的HTTP客户端,则可以发送您想要的任何HTTP标头)。
如何加密服务器和客户端之间发送的数据?
使用wss://
代替ws://