91 lines
2.7 KiB
Markdown
91 lines
2.7 KiB
Markdown
# sock.lua
|
|
|
|
[![Build Status](https://travis-ci.org/camchenry/sock.lua.svg?branch=master)](https://travis-ci.org/camchenry/sock.lua)
|
|
[![Coverage Status](https://coveralls.io/repos/github/camchenry/sock.lua/badge.svg?branch=master)](https://coveralls.io/github/camchenry/sock.lua?branch=master)
|
|
|
|
sock.lua is a networking library for LÖVE games. Its goal is to make getting started with networking as easy as possible.
|
|
|
|
[Documentation](https://camchenry.github.io/sock.lua/)
|
|
|
|
**sock requires [enet](https://github.com/leafo/lua-enet) (which comes with LÖVE 0.9 and up.)**
|
|
|
|
## Features
|
|
|
|
- Event trigger system makes it easy to add behavior to network events.
|
|
- Can send images and files over the network.
|
|
- Can use a custom serialization library.
|
|
- Logs events, errors, and warnings that occur.
|
|
|
|
# Installation
|
|
|
|
1. Clone or download sock.lua.
|
|
2. Clone or download [bitser](https://github.com/gvx/bitser).\*
|
|
3. Place bitser.lua in the same directory as sock.lua.
|
|
4. Require the library and start using it. `sock = require 'sock'`
|
|
|
|
\* If custom serialization support is needed, look at [setSerialization](https://camchenry.github.io/sock.lua//index.html#Server:setSerialization).
|
|
|
|
# Example
|
|
|
|
```lua
|
|
local sock = require "sock"
|
|
|
|
-- client.lua
|
|
function love.load()
|
|
-- Creating a new client on localhost:22122
|
|
client = sock.newClient("localhost", 22122)
|
|
|
|
-- Creating a client to connect to some ip address
|
|
client = sock.newClient("198.51.100.0", 22122)
|
|
|
|
-- Called when a connection is made to the server
|
|
client:on("connect", function(data)
|
|
print("Client connected to the server.")
|
|
end)
|
|
|
|
-- Called when the client disconnects from the server
|
|
client:on("disconnect", function(data)
|
|
print("Client disconnected from the server.")
|
|
end)
|
|
|
|
-- Custom callback, called whenever you send the event from the server
|
|
client:on("hello", function(msg)
|
|
print("The server replied: " .. msg)
|
|
end)
|
|
|
|
client:connect()
|
|
|
|
-- You can send different types of data
|
|
client:send("greeting", "Hello, my name is Inigo Montoya.")
|
|
client:send("isShooting", true)
|
|
client:send("bulletsLeft", 1)
|
|
client:send("position", {
|
|
x = 465.3,
|
|
y = 50,
|
|
})
|
|
end
|
|
|
|
function love.update(dt)
|
|
client:update()
|
|
end
|
|
```
|
|
|
|
```lua
|
|
-- server.lua
|
|
function love.load()
|
|
-- Creating a server on any IP, port 22122
|
|
server = sock.newServer("*", 22122)
|
|
|
|
-- Called when someone connects to the server
|
|
server:on("connect", function(data, client)
|
|
-- Send a message back to the connected client
|
|
local msg = "Hello from the server!"
|
|
client:send("hello", msg)
|
|
end)
|
|
end
|
|
|
|
function love.update(dt)
|
|
server:update()
|
|
end
|
|
```
|