A lightweight & stable cross-platform support library with a focus on asynchronous socket I/O, support win32 & linux & apple & android & wp8 & wp8.1-universal & win10-universal
The core design is reference from https://github.com/chriskohlhoff/asio but very small.
This lib has been used by project http://hongjing.qq.com/ and run at millions of devices.
- 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 tolua
- per io_service, per thread to process socket read,write,connect operations.
Compile yasio\xxsocket.cpp yasio\yasio.cpp with your project
cpptest: https://github.com/halx99/yasio/blob/master/msvc/cpptest/cpptest.cpp
- Compile
yasio\xxsocket.cpp
yasio\yasio.cpp
yasio\ibstream.cpp
yasio\obstream.cpp
yasio\impl\lyasio.cpp
with your project - call luaopen_yasio after LUA VM initialized.
luatest(windows user): open https://github.com/halx99/yasio/blob/master/msvc/luatest/luatest.xsxproj by x-studio365 IDE
-
Copy the folder
yasio
to cocos2d-x engine's folderexternal
,yasio
as sub directory ofexternal
-
Add
yasio\xxsocket.cpp
yasio\yasio.cpp
yasio\ibstream.cpp
yasio\obstream.cpp
yasio\impl\lyasio.cpp
yasio\impl\yasio_cclua.cpp
to your compile system.- For Win32 & Apple platform:
Add
yasio\xxsocket.cpp
yasio\yasio.cpp
yasio\ibstream.cpp
yasio\obstream.cpp
yasio\impl\lyasio.cpp
yasio\impl\yasio_cclua.cpp
to 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/build/android-lua)
- Call luaopen_yasio_cclua(L) at your AppDelegate.cpp, please remember
#include "yasio/yasio_cclua.h"
firstly.
- Copy the folder
yasio
to cocos2d-x engine's folderexternal
,yasio
as sub directory ofexternal
- Add obstream.cpp, ibstream.cpp, xxsocket.cpp, yasio.cpp, impl/yasio_jsb.cpp to your compile system.
- For Win32 & Apple platform:
Add
yasio\xxsocket.cpp
yasio\yasio.cpp
yasio\ibstream.cpp
yasio\obstream.cpp
yasio\impl\lyasio.cpp
yasio\impl\yasio_jsb.cpp
to 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/build/android-jsb)
- Add register code to your AppDelegate.cpp:
sc->addRegisterCallback(jsb_register_yasio);
, please includeyasio_jsb.h
firstly.
- Copy the folder
yasio
to cocos2d-x engine's folderexternal/sources
,yasio
as sub directory ofexternal/sources
- Add obstream.cpp, ibstream.cpp, xxsocket.cpp, yasio.cpp, impl/yasio_jsb20.cpp to your compile system.
- For Win32 & Apple platform: Add
yasio\xxsocket.cpp
yasio\yasio.cpp
yasio\ibstream.cpp
yasio\obstream.cpp
yasio\impl\lyasio.cpp
yasio\impl\yasio_jsb.cpp
to 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/impl/yasio_jsb20.cpp \
Just like:
3. Add register code to your jsb_module_register.cpp: se->addRegisterCallback(jsb_register_yasio);
, please include yasio_jsb20.h
firstly.
see: https://github.com/halx99/yasio/blob/master/msvc/jstest/example.js
showcase:
g++ yasio/xxsocket.cpp yasio/yasio.cpp yasio/ibstream.cpp yasio/obstream.cpp msvc/cpptest/cpptest.cpp --std=c++11 -lpthread -I./ -o cpptest && ./cpptest
- 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 mode
to 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
see: https://github.com/halx99/LuaFramework_UGUI
showcase: