Can i use Mono Api with Mono Touch ?
I try to use it in mono touch, but onConnection Handler not start.
BUT THEN I CLOSE APP, server log write: remove socket channel it means its connected but onConnection not started. PLEASE HELP
MY LOG HERE:
log: [ RECEIVED ]: <cross-domain-policy><allow-access-from domain='*' to-ports='9339' /></cross-domain-policy>, (len: 91)
log: [ RECEIVED ]: <msg t='sys'><body action='apiOK' r='0'></body></msg>, (len: 53)
log: Disconnect due to lost socket connection
log: Disconnect Exception: System.Net.Sockets.SocketException: The socket is not connected
at System.Net.Sockets.Socket.Shutdown (SocketShutdown how) [0x00058] in /Developer/MonoTouch/Source/mono/mcs/class/System/System.Net.Sockets/Socket_2_1.cs:1432
at SmartFoxClientAPI.SmartFoxClient.Disconnect () [0x00000] in <filename unknown>:0
Trying to call onConnectionLost, but no callback is registered
Terminating in response to SpringBoard's termination.
MY CODE HERE:
[code]using MonoTouch.UIKit;
using System.Drawing;
using System;
using MonoTouch.Foundation;
using SmartFoxClientAPI;
using SmartFoxClientAPI.Handlers;
namespace PokerIosMobile1_2
{
public partial class HomeViewController : UIViewController
{
SelectLoginView selectLoginView; //Окно выбора типа входа - 2
//----------------------------------------------------------
// SmartFox Setup variables
//----------------------------------------------------------
private string ip = "192.168.105.193";
private int port = 9339;
//private string statusMessage = "";
static bool UserInterfaceIdiomIsPhone {
get { return UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Phone; }
}
public HomeViewController ()
: base (UserInterfaceIdiomIsPhone ? "HomeViewController_iPhone" : "HomeViewController_iPad", null)
{
}
public override void DidReceiveMemoryWarning ()
{
// Releases the view if it doesn't have a superview.
base.DidReceiveMemoryWarning ();
// Release any cached data, images, etc that aren't in use.
}
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
//Ð
Use Mono Api with monotouch.
- kotbegemot
- Posts: 82
- Joined: 21 Nov 2010, 05:05
- Location: Saint-Petersburg
-
- Posts: 1297
- Joined: 14 Mar 2008, 07:52
- Location: Sweden
I have never tried to use it from Mono Touch - but theoretically there is no difference, so it should work.
What I *think* your code is missing is the part about setting up a timer to pull responses from the API.
Unity is not thread safe - so the API per default queues up responses in the API and then your main program has to pull those to get the responses from the main thread.
You can do 2 things - either run it in non-thread safe mode, or set up a timer to poll.
Non-thread safe property on your client handler:
public bool ThreadSafeMode { get; set; }
It defaults to true. Set it to false before you connect.
Alternatively set up a timer to do this:
void FixedUpdate() {
smartFox.ProcessEvents();
}
FixedUpdate is a Unity engine callback that happens at a fixed interval. When you call ProcessEvents all queued responses will execute.
/Thomas
What I *think* your code is missing is the part about setting up a timer to pull responses from the API.
Unity is not thread safe - so the API per default queues up responses in the API and then your main program has to pull those to get the responses from the main thread.
You can do 2 things - either run it in non-thread safe mode, or set up a timer to poll.
Non-thread safe property on your client handler:
public bool ThreadSafeMode { get; set; }
It defaults to true. Set it to false before you connect.
Alternatively set up a timer to do this:
void FixedUpdate() {
smartFox.ProcessEvents();
}
FixedUpdate is a Unity engine callback that happens at a fixed interval. When you call ProcessEvents all queued responses will execute.
/Thomas
Full Control - maker of Unity/C# and Java SFS API and indie games
Follow on twitter: http://twitter.com/thomas_h_lund
Follow on twitter: http://twitter.com/thomas_h_lund
- kotbegemot
- Posts: 82
- Joined: 21 Nov 2010, 05:05
- Location: Saint-Petersburg
-
- Posts: 1297
- Joined: 14 Mar 2008, 07:52
- Location: Sweden
Ooops - yes. I was talking 2x.
For 1.x the code is:
It should default to non-queue mode where the API calls back into the client thread.
/T
For 1.x the code is:
Code: Select all
smartFox = new SmartFoxClient();
smartFox.runInQueueMode = true;
void FixedUpdate() {
smartFox.ProcessEventQueue();
}
It should default to non-queue mode where the API calls back into the client thread.
/T
Full Control - maker of Unity/C# and Java SFS API and indie games
Follow on twitter: http://twitter.com/thomas_h_lund
Follow on twitter: http://twitter.com/thomas_h_lund
- kotbegemot
- Posts: 82
- Joined: 21 Nov 2010, 05:05
- Location: Saint-Petersburg
-
- Posts: 1297
- Joined: 14 Mar 2008, 07:52
- Location: Sweden
Super duper!
Full Control - maker of Unity/C# and Java SFS API and indie games
Follow on twitter: http://twitter.com/thomas_h_lund
Follow on twitter: http://twitter.com/thomas_h_lund
Return to “.Net / Unity3D API”
Who is online
Users browsing this forum: No registered users and 40 guests