7

socket.io を使用して、unity3d プログラムを node.js サーバーに接続しようとしています。

UnitySocketIO を使用して、クライアントとサーバー間の接続に成功しました。

ただし、On または Emit メソッドは機能しません。

誰かがこの問題で私を助けることができますか?

void Start () {

    string socketUrl = "http://127.0.0.1:50122";
    Debug.Log("socket url: " + socketUrl);

    this.socket = new Client(socketUrl);
    this.socket.Opened += this.SocketOpened;
    this.socket.Message += this.SocketMessage;
    this.socket.SocketConnectionClosed += this.SocketConnectionClosed;
    this.socket.Error += this.SocketError;

    this.socket.Connect();
}

private void SocketOpened (object sender, EventArgs e) {
    Debug.Log("socket opened");                  // i got this message
    this.socket.On ("message", (data) => {
        Debug.Log ("message : " + data);
    });
    this.socket.Emit("join", "abc"); 
    Debug.Log("Emit done");                  // i got this message
}

....

io.sockets.on('connection', function (socket) {

    console.log('connect');                  // i got this message

    socket.emit('message', 'Hello World!');

    socket.on('join', function (id) {
        console.log('client joined with id ' + id);
        socket.emit('message', 'Hello ' + id);
    });
});
4

1 に答える 1

2

イベントが間違った順序で添付されている可能性があります。次のようにしてください。

void Start() {
    string socketUrl = "http://127.0.0.1:50122";
    Debug.Log("socket url: " + socketUrl);

    this.socket = new Client(socketUrl);
    this.socket.Opened += this.SocketOpened;
    this.socket.Message += this.SocketMessage;
    this.socket.SocketConnectionClosed += this.SocketConnectionClosed;
    this.socket.Error += this.SocketError;

    this.socket.On("message", (data) => {
        Debug.Log("message: " + data);
    });

    this.socket.Connect();
}

ノードの場合:

io.sockets.on('connection', function(socket) {
  console.log('client connected');
  socket.emit('message', 'Hello World!');
});

同様に、ほとんどの場合「ハッキング可能」であるため、クライアントが独自の ID を決定できるようにしないでください。クライアントではなく、サーバーのみが重要な決定を行う必要があります。

于 2013-07-10T10:24:11.450 に答える