Fix Socket IO connection issue on iOS

This commit is contained in:
pandamicro 2016-03-31 21:21:20 +08:00
parent 7e87b8b389
commit d93fbea0f6
3 changed files with 33 additions and 8 deletions

View File

@ -558,7 +558,13 @@ void WebSocket::onSubThreadStarted()
{ {
"permessage-deflate", "permessage-deflate",
lws_extension_callback_pm_deflate, lws_extension_callback_pm_deflate,
// iOS doesn't support client_no_context_takeover extension in the current version, it will cause iOS connection fail
// It may be a bug of lib websocket iOS build
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
"permessage-deflate; client_max_window_bits" "permessage-deflate; client_max_window_bits"
#else
"permessage-deflate; client_no_context_takeover; client_max_window_bits"
#endif
}, },
{ {
"deflate-frame", "deflate-frame",

View File

@ -17,6 +17,15 @@
<key>NSTemporaryExceptionMinimumTLSVersion</key> <key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string> <string>TLSv1.1</string>
</dict> </dict>
<key>itharbors.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict> </dict>
</dict> </dict>
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>

View File

@ -125,8 +125,14 @@ var SocketIOTestLayer = cc.Layer.extend({
}, },
onExit: function() { onExit: function() {
if(this._sioEndpoint) this._sioEndpoint.disconnect(); if(this._sioEndpoint) {
if(this._sioClient) this._sioClient.disconnect(); this._sioEndpoint.disconnect();
this._sioEndpoint = null;
}
if(this._sioClient) {
this._sioClient.disconnect();
this._sioClient = null;
}
this._super(); this._super();
}, },
@ -153,7 +159,7 @@ var SocketIOTestLayer = cc.Layer.extend({
onMenuSIOClientClicked: function(sender) { onMenuSIOClientClicked: function(sender) {
//create a client by using this static method, url does not need to contain the protocol //create a client by using this static method, url does not need to contain the protocol
var sioclient = SocketIO.connect("ws://cocos2d-x.org/assets/cpp-tests-resources:4000", {"force new connection" : true}); var sioclient = SocketIO.connect("ws://tools.itharbors.com:4000", {"force new connection" : true});
//if you need to track multiple sockets it is best to store them with tags in your own array for now //if you need to track multiple sockets it is best to store them with tags in your own array for now
sioclient.tag = "Test Client"; sioclient.tag = "Test Client";
@ -193,7 +199,7 @@ var SocketIOTestLayer = cc.Layer.extend({
onMenuSIOEndpointClicked: function(sender) { onMenuSIOEndpointClicked: function(sender) {
//repeat the same connection steps for the namespace "testpoint" //repeat the same connection steps for the namespace "testpoint"
var sioendpoint = SocketIO.connect("ws://cocos2d-x.org/assets/cpp-tests-resources:4000/testpoint", {"force new connection" : true}); var sioendpoint = SocketIO.connect("ws://tools.itharbors.com:4000/testpoint", {"force new connection" : true});
//a tag to differentiate in shared callbacks //a tag to differentiate in shared callbacks
sioendpoint.tag = "Test Endpoint"; sioendpoint.tag = "Test Endpoint";
@ -254,14 +260,18 @@ var SocketIOTestLayer = cc.Layer.extend({
onMenuTestClientDisconnectClicked: function(sender) { onMenuTestClientDisconnectClicked: function(sender) {
if(this._sioClient != null) this._sioClient.disconnect(); if(this._sioClient != null) {
this._sioClient.disconnect();
this._sioClient = null;
}
}, },
onMenuTestEndpointDisconnectClicked: function(sender) { onMenuTestEndpointDisconnectClicked: function(sender) {
if(this._sioEndpoint != null) this._sioEndpoint.disconnect(); if(this._sioEndpoint != null) {
this._sioEndpoint.disconnect();
this._sioEndpoint = null;
}
}, },
toExtensionsMainLayer: function (sender) { toExtensionsMainLayer: function (sender) {