godotC# 對接 socket.io#
godot 程式碼
using Godot;
using System;
using SocketIOClient;
public partial class test : Node
{
private SocketIO client;
public override void _Ready()
{
client = new SocketIO("http://localhost:11000/");
client.On("hi", response =>
{
Console.WriteLine(response);
string text = response.GetValue<string>();
});
client.OnConnected += async (sender, e) =>
{
await client.EmitAsync("hi", "socket.io");
};
client.ConnectAsync();
}
}
socketio v4 程式碼
// 導入 socket.io 模組
const socketIO = require('socket.io');
// 建立 HTTP 伺服器
const http = require('http');
const server = http.createServer();
// 建立 socket.io 伺服器
const io = socketIO(server);
// 監聽連線事件
io.on('connection', (socket) => {
console.log('Client connected:', socket.id);
// 監聽客戶端的 "hi" 事件
socket.on('hi', (message) => {
console.log('Received "hi" from client:', socket.id);
console.log('Message:', message);
// 發送訊息給客戶端
socket.emit('hi', 'Hello from server!');
});
// 監聽斷開連線事件
socket.on('disconnect', () => {
console.log('Client disconnected:', socket.id);
});
});
// 啟動伺服器,監聽指定埠號
const PORT = 11000;
server.listen(PORT, () => {
console.log(`Server listening on port ${PORT}`);
});
是的,socket.io 發的是一個字串。如果您想發送一個物件,您可以將物件轉換為 JSON 字串,然後將其發送到伺服器。在伺服器端,您可以將 JSON 字串轉換回物件。
以下是一個範例:
var obj = new { name = "John", age = 30 };
var json = JsonConvert.SerializeObject(obj);
await client.EmitAsync("identity", json);
在這個範例中,我們建立了一個包含兩個屬性的匿名物件。然後,我們使用 JsonConvert.SerializeObject () 方法將物件轉換為 JSON 字串。最後,我們使用 client.EmitAsync () 方法將 JSON 字串發送到伺服器。
如果您需要更多關於 socket.io 的資訊,請告訴我,我會盡力幫助您。
如果您想新增一個名為 identity 的訊息,您可以使用以下程式碼:
client.OnConnected += async (sender, e) =>
{
await client.EmitAsync("hi", "socket.io");
await client.EmitAsync("identity", "socket.io");
};
client.ConnectAsync();
這個程式碼片段中的 client 是一個 socket.io 客戶端物件,它通過呼叫 ConnectAsync () 方法連接到伺服器。在客戶端連接到伺服器時,它會向伺服器發送一個 "hi" 訊息和一個 "identity" 訊息。
如果您需要更多關於 socket.io 的資訊,請告訴我,我會盡力幫助您。
是的,您需要呼叫 ConnectAsync () 方法才能連接到伺服器。ConnectAsync () 方法是一個非同步方法,它將在背景執行,不會阻塞主線程。
如果您想了解更多關於 ConnectAsync () 方法的資訊,請告訴我,我會盡力幫助您。
using Godot;
using System;
using SocketIOClient;
public partial class test : Node
{
private SocketIO client;
public override void _Ready()
{
var id = new { username = "maomao" };
client = new SocketIO("http://localhost:11000/");
client.On("hi", response =>
{
// Console.WriteLine(response);
GD.Print(response);
string text = response.GetValue<string>();
});
client.OnConnected += async (sender, e) =>
{
await client.EmitAsync("hi", "socket.io");
await client.EmitAsync("identify", id);
};
client.ConnectAsync();
}
}