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);
この例では、2 つのプロパティを持つ匿名オブジェクトを作成します。次に、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();
}
}