yasio is a multi-platform support library with focus on asynchronous TCP socket I/O for any client application, support win32 & linux & apple & android & wp8 & wp8.1-universal & win10-universal.
The core design is reference from asio but very small.
This lib has been used by project RedAlert OL and run at millions of devices.
Clone at github: yasio
- support IPv6-only network.
- support multi-connections at one thread.
- support deadline timer.
- processing tcp sticky internal, user do not need to care it.
- support lua bindings
- support cocos2d-x jsb
- support CocosCreator jsb2.0
- support Unity3D
- support multicast
Compile yasio\xxsocket.cpp yasio\yasio.cpp with your project
please see: tcptest
- Compile
yasio\xxsocket.cppyasio\yasio.cppyasio\ibstream.cppyasio\obstream.cppyasio\bindings\lyasio.cppwith your project - call luaopen_yasio after LUA VM initialized.
luatest(windows user): please download luatest.zip, extract it then openluatest.xsxprojby x-studio IDE
-
Copy the folder
yasioto cocos2d-x engine's folderexternal,yasioas sub directory ofexternal -
Add
yasio\xxsocket.cppyasio\yasio.cppyasio\ibstream.cppyasio\obstream.cppyasio\bindings\lyasio.cppyasio\bindings\yasio_cclua.cppto your compile system.- For Win32 & Apple platform:
Add
yasio\xxsocket.cppyasio\yasio.cppyasio\ibstream.cppyasio\obstream.cppyasio\bindings\lyasio.cppyasio\bindings\yasio_cclua.cppto libluacocos2d project of your Visual Studio or xcode solution. - For Android: Add yasio to your application Android.mk files, such as:
- For Win32 & Apple platform:
Add
LOCAL_STATIC_LIBRARIES += yasio_static
$(call import-module, external/yasio/jni/cocos-lua)
- Call luaopen_yasio_cclua(L) at your AppDelegate.cpp, please remember
#include "yasio/yasio_cclua.h"firstly.
- Copy the folder
yasioto cocos2d-x engine's folderexternal,yasioas sub directory ofexternal - Add obstream.cpp, ibstream.cpp, xxsocket.cpp, yasio.cpp, bindings/yasio_jsb.cpp to your compile system.
- For Win32 & Apple platform:
Add
yasio\xxsocket.cppyasio\yasio.cppyasio\ibstream.cppyasio\obstream.cppyasio\bindings\lyasio.cppyasio\bindings\yasio_jsb.cppto libjscocos2d project of your Visual Studio or xcode solution. - For Android: Add yasio to your application Android.mk files, such as:
- For Win32 & Apple platform:
Add
LOCAL_STATIC_LIBRARIES += yasio_static
$(call import-module, external/yasio/jni/cocos-jsb)
- Add register code to your AppDelegate.cpp:
sc->addRegisterCallback(jsb_register_yasio);, please includeyasio_jsb.hfirstly.
- Copy the folder
yasioto cocos2d-x engine's folderexternal/sources,yasioas sub directory ofexternal/sources - Add obstream.cpp, ibstream.cpp, xxsocket.cpp, yasio.cpp, bindings/yasio_jsb20.cpp to your compile system.
- For Win32 & Apple platform: Add
yasio\xxsocket.cppyasio\yasio.cppyasio\ibstream.cppyasio\obstream.cppyasio\bindings\lyasio.cppyasio\bindings\yasio_jsb.cppto libcocos2d project of your Visual Studio or xcode solution. - For Andorid: Add follow 5 lines to cocos/Android.mk file:
- For Win32 & Apple platform: Add
../external/sources/yasio/xxsocket.cpp \
../external/sources/yasio/yasio.cpp \
../external/sources/yasio/ibstream.cpp \
../external/sources/yasio/obstream.cpp \
../external/sources/yasio/bindings/yasio_jsb20.cpp \
- Add register code to your jsb_module_register.cpp:
se->addRegisterCallback(jsb_register_yasio);, please includeyasio_jsb20.hfirstly.
see: example.js
g++ yasio/xxsocket.cpp yasio/yasio.cpp yasio/ibstream.cpp yasio/obstream.cpp tests/tcp/main.cpp --std=c++11 -lpthread -I./ -o tcptest && ./tcptest or g++ tests/tcp/main.cpp --std=c++11 -DYASIO_HEADER_ONLY -lpthread -I./ -o tcptest && ./tcptest
- For Microsoft Visual Studio, if your project has specific precompiled header, you should include it at head of xxsocket.cpp or specific the compile option:
C/C++ --> Advance -->'Forced Include File'to it(such as pch.h). - For Microsoft Visual Studio 2019 MSVC C++17, you must set compile option:
C/C++ --> Language --> Conformance modeto No, otherwise, you will got compiling error:sol.hpp(8060): error C3779: 'sol::stack::get': a function that returns 'decltype(auto)' cannot be used before it is defined
Tencent xLua integration, see: https://github.com/halx99/xLua
