WebSocketServer
Inherits: WebSocketMultiplayerPeer < NetworkedMultiplayerPeer < PacketPeer < Reference < Object
WebSocket服务器的实现。
描述
这个类实现了WebSocket服务器,它也可以支持高级别的多人游戏API。
在启动服务器后,listen,你需要NetworkedMultiplayerPeer.poll它以固定的时间间隔,例如在Node._process内。当客户端连接、断开或发送数据时,你会收到相应的信号。
注意: 在HTML5导出中不可用。
属性
| ||
| ||
方法
void | disconnect_peer ( int id, int code=1000, String reason=”” ) |
get_peer_address ( int id ) const | |
get_peer_port ( int id ) const | |
is_listening ( ) const | |
listen ( int port, PoolStringArray protocols=PoolStringArray( ), bool gd_mp_api=false ) | |
void | stop ( ) |
信号
当一个客户端要求彻底关闭时触发。你应该继续轮询,直到你得到一个具有相同id
的client_disconnected信号,以实现彻底关闭。请参阅WebSocketPeer.close以了解更多细节。
当新的客户端连接时触发。”协议” 将是与客户端达成的子协议。
当客户端断开连接时触发。如果连接被彻底关闭was_clean_close
将是true
。
- data_received ( int id )
当收到一个新消息时触发。
注意:这个信号在用作高级多人对等的时候,不触发。
属性说明
- String bind_ip
Default |
|
Setter | set_bind_ip(value) |
Getter | get_bind_ip() |
当不设置为*
时,将限制进入的连接到指定的IP地址。将bind_ip
设置为127.0.0.1
将导致服务器只监听本地主机。
- X509Certificate ca_chain
Setter | set_ca_chain(value) |
Getter | get_ca_chain() |
当使用SSL时,你可以将其设置为一个有效的X509Certificate,作为SSL握手过程中额外的CA链信息提供。参阅private_key和ssl_certificate。
- float handshake_timeout
Default |
|
Setter | set_handshake_timeout(value) |
Getter | get_handshake_timeout() |
挂起客户端,即尚未完成 HTTP 握手的客户端之前的时间被认为是陈旧的并强制断开连接,时间以秒为单位。
- CryptoKey private_key
Setter | set_private_key(value) |
Getter | get_private_key() |
当设置为有效的CryptoKey时,与ssl_certificate一起,将导致服务器需要SSL而不是普通的TCP,即wss://
协议。
- X509Certificate ssl_certificate
Setter | set_ssl_certificate(value) |
Getter | get_ssl_certificate() |
当设置为有效的X509Certificate时,连同private_key,将导致服务器需要SSL而不是普通的TCP,即wss://
协议。
方法说明
断开由id
标识的对等体与服务器的连接。更多信息参阅WebSocketPeer.close。
返回给定对等体的IP地址。
返回给定对等体的远程端口。
如果一个具有给定ID的对等体被连接,则返回true
。
- bool is_listening ( ) const
如果服务器正在监听某个端口,返回true
。
- Error listen ( int port, PoolStringArray protocols=PoolStringArray( ), bool gd_mp_api=false )
在给定的端口上开始监听。
你可以通过 “协议” 数组指定所需的子协议。如果列表为空(默认情况下),将不请求任何子协议。
如果true
作为gd_mp_api
传递,服务器将表现得像MultiplayerAPI的网络对等体,来自非Godot客户端的连接将不工作,并且data_received将不被触发。
如果false
被传递(默认),你必须调用PacketPeer函数(put_packet
, get_packet
, etc.),在通过get_peer(id)
返回的WebSocketPeer上,与具有给定id
的对等体进行通信,例如,get_peer(id).get_available_packet_count
。
- void stop ( )
停止服务器并清除其状态。