Skip to content

Commit e83c4bd

Browse files
authored
Merge pull request #1 from throwarray/master
latest
2 parents 9604a00 + d6e1b43 commit e83c4bd

File tree

4 files changed

+68
-11
lines changed

4 files changed

+68
-11
lines changed

README.md

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,24 @@ Convars available:
2424
### Add a listener to receive messages
2525

2626
```lua
27-
-- Add a new listener with a string parameter
28-
AddEventHandler("WebSocketServer:onMessage", function(message)
29-
print("Received message: " .. message)
27+
AddEventHandler("WebSocketServer:onMessage", function(message, endpoint)
28+
print("Received message from " .. endpoint .. ": " .. message)
29+
end)
30+
```
31+
32+
### Add a listener to get new connected remote endpoints
33+
34+
```lua
35+
AddEventHandler("WebSocketServer:onConnect", function(endpoint)
36+
print("New WS remote endpoint: " .. endpoint)
37+
end)
38+
```
39+
40+
### Add a listener to get disconnected remote endpoints
41+
42+
```lua
43+
AddEventHandler("WebSocketServer:onDisconnect", function(endpoint)
44+
print("WS remote endpoint " .. endpoint .. " has been disconnected")
3045
end)
3146
```
3247

@@ -36,6 +51,12 @@ end)
3651
TriggerEvent("WebSocketServer:broadcast", "This message will be broadcasted to all connected webSocket clients.");
3752
```
3853

54+
### Send a message to a specific WebSocket client
55+
56+
```lua
57+
TriggerEvent("WebSocketServer:send", "This message will be sent to a specific webSocket client.", someValidAndConnectedRemoteEndpoint);
58+
```
59+
3960
## Built With
4061

4162
* [deniszykov/WebSocketListener](https://github.com/deniszykov/WebSocketListener)

WebSocketServer.cs

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ public WebSocketServer()
5252
server.OnConnect += (ws) =>
5353
{
5454
Log ("Connection from " + ws.RemoteEndpoint.ToString (), LogLevels.Debug);
55+
56+
TriggerEvent("WebSocketServer:onConnect", ws.RemoteEndpoint.ToString ());
57+
5558
lock (webSockets)
5659
{
5760
webSockets.Add(ws);
@@ -60,6 +63,9 @@ public WebSocketServer()
6063
server.OnDisconnect += (ws) =>
6164
{
6265
Log ("Disconnection from " + ws.RemoteEndpoint.ToString (), LogLevels.Debug);
66+
67+
TriggerEvent("WebSocketServer:onDisconnect", ws.RemoteEndpoint.ToString ());
68+
6369
lock (webSockets)
6470
{
6571
webSockets.Remove(ws);
@@ -70,7 +76,7 @@ public WebSocketServer()
7076
{
7177
Log("Received message: " + msg, LogLevels.Debug);
7278

73-
TriggerEvent("WebSocketServer:onMessage", msg);
79+
TriggerEvent("WebSocketServer:onMessage", msg, ws.RemoteEndpoint.ToString ());
7480
};
7581

7682
EventHandlers["onResourceStart"] += new Action<dynamic>((dynamic resourceName) =>
@@ -128,6 +134,36 @@ public WebSocketServer()
128134
}
129135
}
130136
});
137+
138+
EventHandlers["WebSocketServer:send"] += new Action<dynamic, dynamic>((dynamic message, dynamic client) =>
139+
{
140+
lock (webSockets)
141+
{
142+
foreach (var webSocket in webSockets)
143+
{
144+
if (webSocket.IsConnected)
145+
{
146+
if (webSocket.RemoteEndpoint.ToString () == client) {
147+
try
148+
{
149+
await webSocket.WriteStringAsync((string) message, CancellationToken.None);
150+
}
151+
catch (Exception e)
152+
{
153+
Log("An error occurred while sending a message to " + webSocket.RemoteEndpoint.ToString() + ": " + e.Message, LogLevels.Debug);
154+
}
155+
}
156+
}
157+
else
158+
{
159+
webSockets.Remove(webSocket);
160+
}
161+
}
162+
}
163+
});
164+
165+
166+
131167
}
132168

133169
private void Log(string message, LogLevels level = LogLevels.Info)

WebSocketServer.csproj

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8"?>
22
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<PropertyGroup>
44
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -22,7 +22,7 @@
2222
<ErrorReport>prompt</ErrorReport>
2323
<WarningLevel>4</WarningLevel>
2424
<Externalconsole>true</Externalconsole>
25-
<PlatformTarget>x86</PlatformTarget>
25+
<PlatformTarget>AnyCPU</PlatformTarget>
2626
</PropertyGroup>
2727
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
2828
<DebugType>full</DebugType>
@@ -37,13 +37,13 @@
3737
<Reference Include="CitizenFX.Core">
3838
<HintPath>..\..\..\..\FX\alpine\opt\cfx-server\citizen\clr2\lib\mono\4.5\CitizenFX.Core.dll</HintPath>
3939
</Reference>
40+
<Reference Include="deniszykov.WebSocketListener, Version=4.2.2.0, Culture=neutral, PublicKeyToken=7f78616efb4a208d, processorArchitecture=MSIL">
41+
<HintPath>packages\deniszykov.WebSocketListener.4.2.2\lib\net45\deniszykov.WebSocketListener.dll</HintPath>
42+
</Reference>
4043
<Reference Include="System" />
4144
<Reference Include="Microsoft.CSharp">
4245
<HintPath>bin\Debug\Microsoft.CSharp.dll</HintPath>
4346
</Reference>
44-
<Reference Include="deniszykov.WebSocketListener">
45-
<HintPath>packages\deniszykov.WebSocketListener.4.0.0\lib\net45\deniszykov.WebSocketListener.dll</HintPath>
46-
</Reference>
4747
</ItemGroup>
4848
<ItemGroup>
4949
<Compile Include="Properties\AssemblyInfo.cs" />
@@ -54,4 +54,4 @@
5454
<None Include="packages.config" />
5555
</ItemGroup>
5656
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
57-
</Project>
57+
</Project>

packages.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3-
<package id="deniszykov.WebSocketListener" version="4.0.0" targetFramework="net452" />
3+
<package id="deniszykov.WebSocketListener" version="4.2.2" targetFramework="net452" />
44
</packages>

0 commit comments

Comments
 (0)