我在c#项目中使用异步套接字服务器读取rfid标签。 客户端应用程序会读取第一个rfid标签,并将包含rfid详细信息的字符串发送到我的套接字控制器。
客户端应用程序生成队列并将字符串发送到套接字。在我的套接字控制器中,我读取字符串并从数据库中获取数据,然后将结果模型发送给集线器。
有时我的客户端应用程序不响应快速的标签读取。我是否应该进行任何更改以加快套接字服务器的速度。
public async Task ProcessWSChat(AspNetWebSocketContext context)
{
WebSocket socket = context.WebSocket;
while (true)
{
ArraySegment<byte> buffer = new ArraySegment<byte>(new byte[1024]);
WebSocketReceiveResult result = await socket.ReceiveAsync(buffer, CancellationToken.None);
if (socket.State == WebSocketState.Open)
{
DateTime currentDate = DateTime.Now;
string userMessage = Encoding.UTF8.GetString(buffer.Array, 0, result.Count);
//userMessage = "Vehicle RFID No: " + userMessage + " passed at " + DateTime.Now.ToLongTimeString();
string[] subStrings = userMessage.Split('~');
#region Vehicle details
List<M999GET_RFID_PASSES_Result> rfidDetails = await GetRfidDetails(subStrings[2], subStrings[3]);
if (rfidDetails.Count() > 0)
{
string status = "null";
if (rfidDetails.FirstOrDefault().MRT_TAG_STATUS == 1)
{
status = "ACTIVE";
}
if (rfidDetails.FirstOrDefault().MRT_TAG_STATUS == 2)
{
status = "BLACKLIST";
}
//VHEDETAILViewModel testcus = new VHEDETAILViewModel
//{
// VHE_CODE = "test",
// VHE_NAME = vheDetails.FirstOrDefault().VHE_NAME,
// VHE_RFID_TAG = subStrings[1],
// DESCRIPTION = rfidDetails.FirstOrDefault().MTR_PERMIT_NO,
// GATE_NAME = selectLocation.FirstOrDefault().LOCATION_NAME,
// VHE_NO = rfidDetails.FirstOrDefault().MTR_IDENTIFICATION_NO,
// VHE_TYPE = rfidDetails.FirstOrDefault().MRT_PASS_TYPE, //1- Toyota Vehicles 2-External Vehicles
// CURRENT_DATETIME = currentDate,
// STATUS = status,
// PASSTYPE = rfidDetails.FirstOrDefault().MRT_PASS_TYPE.ToString()
//};
PermitDetailsHeader rfidDetail = new PermitDetailsHeader
{
PermitNo = rfidDetails.FirstOrDefault().MTR_PERMIT_NO,
IdentificationNo = rfidDetails.FirstOrDefault().MTR_IDENTIFICATION_NO,
CURRENT_DATETIME = currentDate,
Status = status,
passType = rfidDetails.FirstOrDefault().MRT_PASS_TYPE.ToString(),
tid = subStrings[2],
passId = rfidDetails.FirstOrDefault().MRT_PASS_ID,
readerIp = subStrings[3]
};
var subscribed = Hub.Clients.All;
subscribed.addItem(rfidDetail);
buffer = new ArraySegment<byte>(Encoding.UTF8.GetBytes(userMessage));
await socket.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None);
}
#endregion
}
else
{
break;
}
}
}