A server is the hub of any network related activity. Clients usually connect to a single server to exchange messages between each other or perform networking tasks. Servers cannot connect to clients or force them to connect.
Machines dedicated to running server programs, or server-specialized OSes like Windows Server OS, are called server machines; but in fact, any machine may host a server, even those running non-server OSes, just that they will lack performance gains from an OS designed for those.
A public server is used by any sort of game, making it a quick-and-easy test for how a server performs. You can use it for testing, or for published games, assuming you don't mind the third-party ownership.
A Lacewing public server list is hosted here, by Darkwire Software – the creators of Lacewing Blue.
If you use a public server, make sure you listen to server text messages on subchannel 0, and read the welcome message; Darkwire has message caps to ensure the free users don't overload the network or overuse the bandwidth.
These connections initially start as HTTP/HTTPS, with a request to upgrade to WebSocket. When approved, the connection becomes WebSocket binary – with HTTPS remaining encrypted, as it becomes WebSocket Secure protocol wrapping around the Lacewing Relay protocol.
Due to this extra protocol, Blue WebSocket servers and clients do not use the same port as the regular Relay server.
Both HTML5 and UWP support Blasted (UDP) messages by converting them to Sent (TCP) messages, but still triggering Blasted events.
For more details, see the platform notes.
What control does a server have?
Like all protocols, the server has the final say in what is allowed or not allowed to pass through it to other clients.
Once connected, a client is under control by the server to the extent of the protocol used by the client; the Relay protocol is basically self-contained, however, as no part of Relay accesses the filesystem or OS. For more details on how far a malicious server can go, see the Security topic.
In the Lacewing Relay protocol, a server can disconnect you, change your Lacewing client name, change Lacewing channels you're joined to, change the channel master, and send messages to you or to channels.
Servers are also responsible for generating and sending the channel list upon your request.
Any other functionality must be programmed in the Fusion events; e.g. moving player objects, downloading files from binary messages, etc.
Servers can disallow you from leaving channels (although an uncommon thing to do), but they cannot disallow you from disconnecting.
Servers can force you to leave channels, and to join channels, without you first requesting; they can also change the client or channel names that you request.
This can be useful, e.g. when creating a game room, you put all the parameters and game type in the name you request to join, and the custom server copies them out, then removes them from the name.
Join channel: "Dave's Amazing Room|MaxPlayers=8|Map=Bessie"
Server approved join for: "Dave's Amazing Room"
String splitting (also known as string tokenizing) is vital to use in these scenarios where text contains sub-texts. Consider using the String Tokenizer object or similar extensions to split text up.