Message

Functions for passing messages and constructing URL objects.

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 - 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(urlstring)

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 to create the url from

RETURN

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([socket], [path], [fragment])

creates a new URL from separate arguments

creates a new URL from separate arguments

PARAMETERS

[socket] - socket of the URL

[path] - path of the URL

[fragment] - fragment of the URL

RETURN

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]


msg.post(receiver, message_id, [message])

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 - The receiver must be a string in URL-format, a URL object or a hashed string.

message_id - The id must be a string or a hashed string.

[message] - 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)