场景:
java 游戏服务器,原生 socket 通信
后台 web 服务器,php
需求:
能否把这两个服务器合并到一起
其他猜想:
比如原来的微信或是 qq,有手机端,pc 端,web 端,服务端是如何架构可以让这三端通信的
1
watzds 2020-06-20 08:33:48 +08:00 via Android
Java web 里也可以加 socket 处理啊,或者加 netty 都行
|
2
opengps 2020-06-20 08:33:57 +08:00
socket 是依赖服务端程序的,web 端的那个 websocket 是多了信息头的。
三端通信最终都是转发实现,并非都直接用在同一个集群里的同一套代码逻辑 |
3
lbmjsls1 OP |
4
cnzjl 2020-06-20 08:41:49 +08:00
可以合到一起,比如 WEB 开发使用 SpringBoot,然后 socket 使用 Netty
|
5
Seney 2020-06-20 09:17:44 +08:00
为什么不用 netty 呢 尤其是游戏服务器对网络要求蛮高的
|
6
hantsy 2020-06-20 09:24:43 +08:00
可以啊,Spring 已经支持 RSocket 规范,支持 TCP,Websocket 等协议。游戏开发就更适合 RSocket 这种协议了。
eg. https://github.com/hantsy/rsocket-sample/tree/master/crud 这个例子中,client 与 server 之间使用 tcp 通讯,为了方便测试,client 同时暴露了基于 HTTP 的 REST API 给外部。 |
7
hantsy 2020-06-20 09:29:30 +08:00
|
8
Amance 2020-06-20 09:38:45 +08:00
rpc 通信就行了
|
9
hantsy 2020-06-20 09:56:07 +08:00
|
10
RJH 2020-06-20 10:09:11 +08:00
可以通过使用 MQ 或者共享数据库来实现三端通信
|
11
opengps 2020-06-20 10:40:18 +08:00
@lbmjsls1 刚才理解叉批了,我以为你说的 web 是浏览器端,看你后来意思应当是服务器端的 web,那就都可以用 socket 开发了,你可以用同样逻辑的 socket 核心进行不同位置的托管转发实现,具体实现方式就不用多说了,完全由你自己设计
|
12
taogen 2020-06-20 11:29:32 +08:00 via Android
Web server 是帮你将 TCP messages 转换为 HTTP messages,底层还是 socket 通信。
原生的 socket 通信直接写个 Java 程序,创建 socket,监听端口,处理请求就行了。 两个应用可以合并到一台服务器,只要服务器的资源吃得消就行。 |
13
sagaxu 2020-06-20 11:49:46 +08:00 via Android
Java web 跟普通 Java 没有区别
|
14
micolore 2020-06-20 12:40:08 +08:00 via iPhone
服务器高并发必然要用到 nio,netty 是首选,至于怎么结合,要看你们的系统架构了。
|
15
jimrok 2020-06-20 14:33:20 +08:00
只要不是 raw socket,java 是可以搞的。raw socket 写 ping 这种代码需要发 icmp 的包,java 就搞不来了。
|