WebSocket connection to 'ws://localhost:19431/API/Base/LuckySheet/nonlogin/LuckySheetEvent/UpdateUrl?user=t&t=111&g=' failed: One or more reserved bits are on: reserved1 = 0, reserved2 = 1, reserved3 = 0
在demo是能正常运行,整合到项目就报错
WebSocketReceiveResult result = await socket.ReceiveAsync(buffer, CancellationToken.None); 这里返回出去就报错了
以下是我的代码
后台:
while (true)
{
if (socket.State == WebSocketState.Open)
{
ArraySegment<byte> buffer = new ArraySegment<byte>(new byte[12048]);
WebSocketReceiveResult result = await socket.ReceiveAsync(buffer, CancellationToken.None);
#region 消息处理(字符截取、消息转发)
try
{
#region 关闭Socket处理,删除连接池
if (socket.State != WebSocketState.Open)//连接关闭
{
if (CONNECT_POOL.ContainsKey(user)) CONNECT_POOL.Remove(user);//删除连接池
break;
}
#endregion
string userMsg = Encoding.UTF8.GetString(buffer.Array, 0, result.Count);//发送过来的消息
if ("rub".Equals(userMsg))
{
await socket.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None);
}
string strData = PakkUtil.UnZip(userMsg);
userMsg = Uri.UnescapeDataString(strData);
dynamic jsonObject = JsonConvert.DeserializeObject<dynamic>(userMsg);
int type = 0;
string t = jsonObject["t"].ToString();
foreach (var key in CONNECT_POOL.Keys)
{
var conn = CONNECT_POOL[key];
if (conn == socket)
{
continue;
}
if ("mv".Equals(t))
{
type = 3;
}
else if (!"shs".Equals(t))
{
type = 2;
}
updateData msg = new updateData()
{
createTime = DateTime.Now.ToString(),
returnMessage = "success",
id = user,
type = type,
status = "0",
data = userMsg,
username = user
};
string json = JsonConvert.SerializeObject(msg);
buffer = new ArraySegment<byte>(Encoding.UTF8.GetBytes(json));
await conn.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None);
}
}
catch (Exception exs)
{
//消息转发异常处理,本次消息忽略 继续监听接下来的消息
}
#endregion
}
看看项目的配置文件是哪个,是不是不同。