использую движок Unreal Engine 4. Делаю Билд под HTML5 и возникает проблема с подключением к серверу через WebSockets. Сервер видит подключение, но функция socket возвращает -1 почему-то
Клиент подключение:
void UWebSocket::Connect(const FInternetAddr &ServerAddress, FString getAddr, int32 getPort)
{
#if PLATFORM_HTML5_BROWSER
struct sockaddr_in addr;
int res;
SockFD = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if (SockFD == -1)
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Failed create!"));
return;
}
else
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, TEXT("Socket created: ") + FString::FromInt(SockFD));
}
fcntl(SockFD, F_SETFL, O_NONBLOCK);
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(ServerAddress.GetPort());
if (inet_pton(AF_INET, TCHAR_TO_ANSI(*ServerAddress.ToString(false)), &addr.sin_addr) != 1)
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Failed inet_pton"));
return;
}
Ret = connect(SockFD, (struct sockaddr *)&addr, sizeof(addr));
if (Ret < 0)
{
GEngine->AddOnScreenDebugMessage(10, 5.f, FColor::Red, "Don't Connect");
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Socket: ") + FString::FromInt(Ret));
return;
}
else
{
GEngine->AddOnScreenDebugMessage(13, 5.f, FColor::Green, "Connect " + getAddr + ":" + FString::FromInt(getPort));
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Socket: ") + FString::FromInt(Ret));
}
#endif
}
Сервер:
import tornado.web
import tornado.websocket
import tornado.ioloop
clients = 0
ID = 0
class WebSocketHandler(tornado.websocket.WebSocketHandler):
def check_origin(self, origin):
return True
def open(self):
print "New client connected"
#self.write_message("You are connected")
global clients
clients = clients + 1
print clients
def on_message(self, message):
self.write_message(message)
print message
def on_close(self):
print "Client disconnected"
application = tornado.web.Application([(r"/", WebSocketHandler),])
if __name__ == "__main__":
application.listen(7777)
tornado.ioloop.IOLoop.instance().start()