Mark: I’ve been following this thread with interest. Thanks for the code. Now I’m wondering how I might use this capability. Can I set up a multi-user game using this? I must have to somehow get the user’s ip address. There are probably samples in the Livecode examples library and I’ll search around for one. Best, Bill
> On May 9, 2015, at 10:54 AM, Mark Waddingham <[email protected]> wrote: > >> My sequence is that the client connects to the server, and then sends it >> periodic messages. On the initial connection, the server creates a >> database connection and leaves it open (opening a database takes time >> measured in hundreds of milliseconds). The approach of opening and >> closing a database on each transaction simply isn't a realistic option for >> me. > > All the socket commands can be used in a non-blocking, message-based way. > > When you 'accept connections' you create a listening socket whose purpose is > to wait for connections and then supply you with a 'normal' socket to talk to > the client which connected. The listening socket will continue to persist > after this (until you close it) continuing to wait for new connections from > clients. > > So an outline of an example (which assumes on receiving data from the client > you need to send it something): > on startServer > accept connections ... with message "newClient" > end startServer > > on newClient pClientSocket > read from pClientSocket ... with message "clientDataReceived" > end newClient > > on clientDataReceived pClientSocket, pData > ... process pData ... > write ... to socket pClientSocket with pData with message "clientDataSent" > end clientDataReceived > > on clientDataSent pClientSocket > read from pClientSocket ... with message "clientDataReceived" > end clientDataSent > > The idea here is that each time you get a 'newClient' message you have a > newly named socket 'pClientSocket' which is the other end of the connection > the client initiated. You can have as many of these client-connected sockets > as you like, and independently read / write to them with messages sent when > the action you request completes. > > If you use the blocking form of the socket commands then (as they don't > dispatch messages whilst blocking) you can basically only talk to one client > at a time. The blocking form may well be fine for a client, if it is > connecting to a server, interacting with some sort of linear protocol and > then closing the connection; but for a server that wishes to handle multiple > clients simultaneously it is a much better idea to use the messaging form. > > Hope this helps, > > Mark. > > -- > Mark Waddingham ~ [email protected] ~ http://www.livecode.com/ > LiveCode: Everyone can create apps > > _______________________________________________ > use-livecode mailing list > [email protected] > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode _______________________________________________ use-livecode mailing list [email protected] Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
