Код:
io.sockets.to(findRoomID).emit('COMPLETE_MATCH', { start: "true" });
*findRoomID => bbbb
Консоль:
{bbbb: Комната {сокеты: {bbbb: true, aaa: true}, длина: 2}}
Но клиент не получил COMPLETE_MATCH
правильно
Что мне делать ??
Я загрузил код сокета io server.
Можете ли выскажите, какая часть является проблемой?
Я не могу сказать, какая часть является проблемой.
[Сервер]
const app = require('express');
const http = require('http').Server(app);
const io = require('socket.io')(http);
var rooms = [];
var clients = [];
var clients = [];
var rooms = [];
io.on('connection', function(socket) {
socket.on('MATCH', function (data) {
socket.leave(socket.id);
var NickName = data.name;
socket.id = NickName;
clients.push(socket.id);
//search all rooms
var isEmpty = false;
var isNum = 0;
for (var ii = 0; ii < rooms.length; ii++)
{
if (rooms[ii].count < 2)
{
isEmpty = true;
isNum = ii;
}
}
if (isEmpty) //join room
{
var findRoomID = rooms[isNum].id;
rooms[isNum].sockets += ',' + socket.id;
rooms[isNum].count++;
socket.join(findRoomID);
//send msg to select room
io.in(findRoomID).emit('COMPLETE_MATCH', {start: "true"});
}
else //create room
{
var sockets = {
id: socket.id,
sockets : socket.id,
count: 1
}
rooms.push(sockets);
socket.join(socket.id);
}
});
});
Код клиента был написан на Unity 5.6.6,Клиенты могут выдавать MATCH
правильно, но не могут получить COMPLETE_MATCH
правильно.[Клиент - Unity5.6.6]
public class ScSocket : MonoBehaviour {
public SocketIOComponent socket;
public Button btnMatch;
public InputField input;
public Text txTest;
void Start ()
{
btnMatch.onClick.AddListener(() => StartCoroutine(StartMatch()));
//
socket.On("COMPLETE_MATCH", OnCompletedMatch);
DontDestroyOnLoad(gameObject);
}
IEnumerator StartMatch()
{
yield return new WaitForSeconds(0.5f);
Dictionary<string, string> data = new Dictionary<string, string>();
data.Add("name", input.text);
socket.Emit("MATCH", new JSONObject(data));
}
void OnCompletedMatch(SocketIOEvent evt)
{
Debug.Log(evt);
txTest.text = JsonToString(evt.data.ToString(), "\"");
}
string JsonToString(string target, string s)
{
string[] newString = Regex.Split(target, s);
return newString[1];
}
}