Message

Functions for passing messages and constructing URL objects.

msg.post()

posts a message to a receiving URL

Post a message to a receiving URL. The most common case is to send messages to a component. If the component part of the receiver is omitted, the message is broadcast to all components in the game object.

The following receiver shorthands are available:

There is a 2 kilobyte limit to the message parameter table size.

PARAMETERS

receiver -

string | url | hash The receiver must be a string in URL-format, a URL object or a hashed string.

message_id -

string | hash The id must be a string or a hashed string.

[message] -

table a lua table with message parameters to send.

EXAMPLES

Send "enable" to the sprite "my_sprite" in "my_gameobject":

msg.post("my_gameobject#my_sprite", "enable")

Send a "my_message" to an url with some additional data:

local params = {my_parameter = "my_value"}
msg.post(my_url, "my_message", params)


msg.url()

creates a new URL

This is equivalent to msg.url(nil) or msg.url("#"), which creates an url to the current script component.

RETURN

url -

url a new URL

EXAMPLES

Create a new URL which will address the current script:

local my_url = msg.url()
print(my_url) --> url: [current_collection:/my_instance#my_component]


msg.url()

creates a new URL from a string

The format of the string must be [socket:][path][#fragment], which is similar to a HTTP URL. When addressing instances:

In addition, the following shorthands are available:

PARAMETERS

urlstring -

string string to create the url from

RETURN

url -

url a new URL

EXAMPLES

local my_url = msg.url("#my_component")
print(my_url) --> url: [current_collection:/my_instance#my_component]

local my_url = msg.url("my_collection:/my_sub_collection/my_instance#my_component")
print(my_url) --> url: [my_collection:/my_sub_collection/my_instance#my_component]

local my_url = msg.url("my_socket:")
print(my_url) --> url: [my_collection:]


msg.url()

creates a new URL from separate arguments

PARAMETERS

[socket] -

string | hash socket of the URL

[path] -

string | hash path of the URL

[fragment] -

string | hash fragment of the URL

RETURN

url -

url a new URL

EXAMPLES

local my_socket = "main" -- specify by valid name
local my_path = hash("/my_collection/my_gameobject") -- specify as string or hash
local my_fragment = "component" -- specify as string or hash
local my_url = msg.url(my_socket, my_path, my_fragment)

print(my_url) --> url: [main:/my_collection/my_gameobject#component]
print(my_url.socket) --> 786443 (internal numeric value)
print(my_url.path) --> hash: [/my_collection/my_gameobject]
print(my_url.fragment) --> hash: [component]