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="" )

String

get_peer_address ( int id ) const

int

get_peer_port ( int id ) const

bool

has_peer ( int id ) const

bool

is_listening ( ) const

Error

listen ( int port, PoolStringArray protocols=PoolStringArray( ), bool gd_mp_api=false )

void

stop ( )

信号

当一个客户端要求彻底关闭时触发。你应该继续轮询,直到你得到一个具有相同idclient_disconnected信号,以实现彻底关闭。请参阅WebSocketPeer.close以了解更多细节。


  • client_connected ( int id, String protocol )

当新的客户端连接时触发。"协议" 将是与客户端达成的子协议。


  • client_disconnected ( int id, bool was_clean_close )

当客户端断开连接时触发。如果连接被彻底关闭was_clean_close 将是true


  • data_received ( int id )

当收到一个新消息时触发。

注意:这个信号在用作高级多人对等的时候,触发。

属性说明

Default

"*"

Setter

set_bind_ip(value)

Getter

get_bind_ip()

当不设置为*时,将限制进入的连接到指定的IP地址。将bind_ip设置为127.0.0.1将导致服务器只监听本地主机。


Setter

set_ca_chain(value)

Getter

get_ca_chain()

当使用SSL时,你可以将其设置为一个有效的X509Certificate,作为SSL握手过程中额外的CA链信息提供。参阅private_keyssl_certificate


  • float handshake_timeout

Default

3.0

Setter

set_handshake_timeout(value)

Getter

get_handshake_timeout()

挂起客户端,即尚未完成 HTTP 握手的客户端之前的时间被认为是陈旧的并强制断开连接,时间以秒为单位。


Setter

set_private_key(value)

Getter

get_private_key()

当设置为有效的CryptoKey时,与ssl_certificate一起,将导致服务器需要SSL而不是普通的TCP,即wss://协议。


Setter

set_ssl_certificate(value)

Getter

get_ssl_certificate()

当设置为有效的X509Certificate时,连同private_key,将导致服务器需要SSL而不是普通的TCP,即wss://协议。

方法说明

  • void disconnect_peer ( int id, int code=1000, String reason="" )

断开由id标识的对等体与服务器的连接。更多信息参阅WebSocketPeer.close


返回给定对等体的IP地址。


  • int get_peer_port ( int id ) const

返回给定对等体的远程端口。


如果一个具有给定ID的对等体被连接,则返回true


  • bool is_listening ( ) const

如果服务器正在监听某个端口,返回true


在给定的端口上开始监听。

你可以通过 "协议" 数组指定所需的子协议。如果列表为空(默认情况下),将不请求任何子协议。

如果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 ( )

停止服务器并清除其状态。