(Real-Life Example: Device → TCP Server → WebSocket → Live Map Refresh)”**
GPS Tracking का सबसे exciting हिस्सा क्या है?
👉 Live Location Move होते देखना!
Map पर dot चलते हुए दिखाना real-time WebSocket का magic है।
इस ब्लॉग में आप सीखेंगे:
✔ WebSocket क्या है
✔ यह HTTP से कैसे अलग है
✔ क्यों GPS Live Tracking में WebSocket best है
✔ C# में WebSocket server कैसे बनता है
✔ Device → Server → WebSocket → Map chain
✔ Broadcasting multiple clients
✔ High-performance architecture
✔ Real GPS examples
WebSocket =
एक permanent दो-तरफ़ा (bi-directional) connection,
जिससे server और client दोनों real-time data भेज सकते हैं।
HTTP:
Client → Request
Server → Response
Connection closed
WebSocket:
Client ↔ Server
Connection open
Both can send messages anytime
GPS live tracking के लिए बिल्कुल perfect।
✔ Real-time location updates
✔ Zero delay
✔ Server → Client push possible
✔ Infinite updates without reconnect
✔ Efficient bandwidth usage
✔ Smooth map animation
[G17 / S15 GPS Device]
↓ TCP
[TCP Server Receives Packet]
↓
[Packet Parsed into GPSDevice model]
↓
[WebSocket Server Broadcasts Location]
↓
[Browser / Mobile App Map Updates Marker]
यही architecture हर GPS company use करती है।
Add WebSocket support:
app.UseWebSockets();
Create WebSocket endpoint:
app.Map("/ws", async context =>
{
if (context.WebSockets.IsWebSocketRequest)
{
WebSocket socket = await context.WebSockets.AcceptWebSocketAsync();
await HandleWebSocket(socket);
}
});
List<WebSocket> Clients = new();
async Task HandleWebSocket(WebSocket ws)
{
Clients.Add(ws);
byte[] buffer = new byte[1024];
while (ws.State == WebSocketState.Open)
{
var result = await ws.ReceiveAsync(buffer, CancellationToken.None);
if(result.MessageType == WebSocketMessageType.Close)
break;
}
Clients.Remove(ws);
await ws.CloseAsync(WebSocketCloseStatus.NormalClosure, "bye", CancellationToken.None);
}
अब server unlimited clients connect कर सकता है
→ mobile apps → dashboards → maps.
async Task BroadcastAsync(string json)
{
var seg = new ArraySegment<byte>(Encoding.UTF8.GetBytes(json));
foreach (var ws in Clients.ToList())
{
if (ws.State == WebSocketState.Open)
await ws.SendAsync(seg, WebSocketMessageType.Text, true, CancellationToken.None);
}
}
अब जब भी नया GPS packet मिले →
BroadcastAsync(json) चलाओ →
Map marker instantly update।
string json = JsonSerializer.Serialize(new {
imei = device.IMEI,
lat = device.Latitude,
lon = device.Longitude,
speed = device.Speed,
battery = device.Battery
});
await BroadcastAsync(json);
Single server unlimited map users को real-time update भेज सकता है:
Owner
Fleet manager
Admin
Shared user
सभी को same WebSocket message मिलता है।
High traffic:
TCP Server (receives packets)
↓
Redis PubSub Channel
↓
Multiple WebSocket Servers
↓
Thousands of connected clients
यह cluster system में use होता है।
Every 30 seconds:
await ws.SendAsync(Encoding.UTF8.GetBytes("ping"), WebSocketMessageType.Text, true, CancellationToken.None);
Client returns "pong"
→ connection healthy.
❌ हर packet पर WebSocket create करना
✔ 1 connection per client
❌ JSON बहुत बड़ा भेजना
✔ Minimal payload भेजो
❌ Blocking code WebSocket handler में
✔ हमेशा async
❌ Clients list thread-safe न रखना
✔ Use ConcurrentBag<WebSocket>
❌ Location push में delay
✔ Push instantly, no queueing
WebSocket आपके GPS system को बनाता है:
✔ Real-time
✔ Live map ready
✔ Smooth
✔ Fast
✔ Modern
✔ Multi-user supported
✔ Perfect for Android/iOS/Web apps
GPS devices TCP से data भेजते हैं,
और WebSocket उस data को दुनिया भर के clients तक real-time पहुँचाता है।
0 Comments
Thanks for Commenting on our blogs, we will revert back with answer of your query.
EmojiThanks & Regards
Sonu Yadav