我想实现一个实时消息的功能,例如在脸书上聊天,但有几个问题让我困惑:
1.为了减少服务器的开销并使其成为真正的“实时”,我应该使用全双工像socket这样的通信而不是Ajax,是吗?
2.如果我使用套接字,我应该选择哪种协议,TCP或UDP?
3.假设我正在使用TCP,服务器是否会继续尝试重新发送丢失的包,这样会花费很多开销?
4.如果网络在服务器和客户端之间的通信中失败会怎么样?套接字是否会自行关闭,或者我应该处理几种网络条件?
任何人都可以帮忙吗?服务器推送或客户端请求? TCP还是UDP?
0
A
回答
0
您可以使用WebSockets。 XMLHttpRequest的,现在可能是过时的东西实时(因为它不是实时的),虽然你可能回落到使用它谁使用浏览器的人不支持WebSockets的
-
使用UDP,如果您发送的信息仅在发送时间内有效,例如在作为玩家位置的游戏中(您不希望在5秒前收到他们的位置)。此外,你不能使用UDP与WebSockets
对于其他任何东西,使用TCP(除非你打洞来实现P2P),因为数据丢失可能对你不利,TCP处理它。
你将不得不检查反正手动重新发送UDP数据丢失,除非通信失败是可以接受的,你
,你会得到一个IOException。如果连接没有正确关闭,那么在您可以根据您的需要更改无响应超时之后,将抛出异常。假设您使用TCP,否则当您根据您收到的响应/数据(或未收到)考虑客户端连接或断开连接时,应该自己想清楚。
-1
相关问题
- 1. android客户端服务器UDP或TCP?
- 2. Python“推送服务器”tcp客户端
- 3. UDP服务器,TCP客户端?
- 4. TCP/UDP客户端/服务器程序
- 5. 我应该做API请求服务器端还是客户端?
- 6. 如何区分客户端是否使用TCP或UDP从服务器端
- 7. Apple推送通知服务使用UDP还是TCP?
- 8. TCP客户端服务器
- 9. 客户端服务器 - (TCP)
- 10. UDP服务器和UDP客户端
- 11. 客户端 - 服务器按钮请求
- 12. 客户端从服务器请求
- 13. udp服务器根据从udp客户端收到的请求做出响应
- 14. 服务器端从另一个客户端获取GET请求时推送到客户端
- 15. 社交媒体提要 - 客户端或服务器端请求?
- 16. 处理大量客户端:UDP或TCP?
- 17. Heroku上的Java TCP/UDP服务器和客户端
- 18. TCP客户端发送数据,但TCP服务器收到空
- 19. 用于客户机/服务器网吧软件的TCP或UDP?
- 20. UDP服务器/游戏客户端
- 21. 客户端 - 服务器UDP连接
- 22. UDP多客户端聊天服务器
- 23. udp客户端服务器程序c
- 24. UDP客户端/服务器块
- 25. 双向UDP客户端和服务器?
- 26. C#UDP服务器/客户端 - NAT
- 27. udp - 客户端到多个服务器
- 28. 客户端服务器udp mac与windows
- 29. Ping服务器和Ping客户端(UDP)
- 30. UPD客户端和UDP服务器
我建议你尝试TCP并找出答案。你可能试图解决那些对你来说不成问题的问题。 :) –
我只是不知道如何处理不同的网络条件。感谢您的建议,我会尽力。 :) – dastan
几乎所有错误都会导致IOException。如果您尝试从连接读取(),您将能够检测到连接已关闭。 –