我根据 【Godot】Websocket入门教程(Godot同时作为客户端和服务端)做的连接
服务端
extends Control
var server = null
var ids = []
func _ready():
server = WebSocketServer.new()
server.connect("client_close_request",self,"_request") #关闭
server.connect("client_connected",self,"_connected") #连接
server.connect("client_disconnected",self,"_disconnected") #断开
server.connect("data_received",self,"_data") #数据
var err = server.listen(8080)
if err != OK:
set_process(false)
func _process(delta): #开始
server.poll()
func _exit_tree(): #结束
server.stop()
func connected_id(id):
if ids.find(id) != -1:
ids.remove(ids.find(id))
func _request(id:int, code:int, reason:String): #关闭
connected_id(id)
func _connected(id:int, reason:String): #连接
print(id)
ids.append(id)
func _disconnected(id:int, close:bool):#断开
connected_id(id)
pass
func _data(id:int): #数据
var data = server.get_peer(id).get_var()
print(id,data)
for cid in ids:
server.get_peer(cid).pur_var(data)
客户端
extends Spatial
var client = null
func _ready():
client = WebSocketClient.new()
client.connect("connection_closed", self, "_failed") #关闭
client.connect("connection_error", self, "_failed") #错误
client.connect("connection_established", self, "_established") #成功
client.connect("data_received", self, "_data") #数据
server()
func server():
var err = client.connect_to_url("ws://localhosthost:8080")
if err != OK:
set_process(false)
else:
set_process(true)
func _process(delta):
client.poll()
func _exit_tree():
client.disconnect_from_host()
func _failed(clean:bool): #关闭 错误
server()
func _established(protocol:String): #成功
client.get_peer(1).put_var("加入服务器")
func _data(): #接受
var data = client.get_peer(1).put_var()
$"操作界面/交流/文本".text += data + "\n"
pass
func _on_Send_pressed():
pass # Replace with function body.
其中客户端报了一个警告 Remote debugger failed listening on port: 6007 Retrying on new port: 6008
两个代码不像视频中一样放在同一个项目里
现在服务端的输出一直没反应,问一下咋整