Tôi có một máy chủ TCP đơn giản được viết bằng C# có chức năng gửi và nhận dữ liệu theo các khoảng thời gian được chỉ định và tôi có một ứng dụng NodeJS.
Tôi hiện đang chuyển từ NetworkStream
Gửi dữ liệu như sau:
NetworkStream riêng tư nwStream;
nwStream = clientMachine.GetStream();
nwStream.Write(buffer, 0, buffer.Length); // Bên trong một vòng lặp
và nhận nó trong NodeJS như thế này:
client.on('data', (data) => {
Ngoại trừ máy chủ C# TCP của tôi data
Có cách nào khác để phát ra các sự kiện khác nhau không? Sử dụng Socket.io tôi có thể socket.emit('customEvent', someData)
Và thích socket.on('customEvent', returnData)
Tương tự như việc nhận nó, nhưng tôi không chắc liệu mình có thể đạt được điều này với C# hay không.
Tôi không sử dụng Socket.io, ở trên chỉ là ví dụ về hành vi tôi muốn đạt được.
Nếu bạn sử dụng ổ cắm thô ở cả hai đầu, bạn chỉ có thể thiết kế giao thức của riêng mình để nhúng tên vào từng khung logic... Bản thân ổ cắm TCP không có bất kỳ cơ chế nào như vậy, cũng như các gói thô.
Một cách điển hình/dễ dàng để làm điều này có thể giống như sau:
{Tên sự kiện, UTF8}\r\n{độ dài, số nguyên endian nhỏ 4 byte}{tải trọng, byte độ dài}
Nếu tên sự kiện của bạn có thể chứa dòng mới/dòng mới thì bạn cũng sẽ cần sử dụng phương thức độ dài tải trọng/tải trọng cho tên sự kiện.
Tôi là một lập trình viên xuất sắc, rất giỏi!