Archived
Compare commits
4
Commits
rpc-react-18
..
dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1df6b06a12 | ||
|
|
fbfa39dd8a | ||
|
|
fcb83f6636 | ||
|
|
81639386e5 |
+3
-8
@@ -1,8 +1,8 @@
|
|||||||
# Editor
|
# Editor
|
||||||
.vscode/
|
.vscode
|
||||||
.idea/
|
.idea
|
||||||
|
|
||||||
.git/
|
.git
|
||||||
|
|
||||||
# Server Files
|
# Server Files
|
||||||
server/bin
|
server/bin
|
||||||
@@ -18,8 +18,3 @@ server/ragemp-server.exe
|
|||||||
# Development
|
# Development
|
||||||
node_modules
|
node_modules
|
||||||
pnpm-lock.yaml
|
pnpm-lock.yaml
|
||||||
|
|
||||||
# Build
|
|
||||||
build/
|
|
||||||
dist/
|
|
||||||
out/
|
|
||||||
+10
-10
@@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"name": "rage-fw-example-browser",
|
"name": "rage-fw-example-browser",
|
||||||
"description": "Browser side of Rage-FW example",
|
"version": "0.0.0",
|
||||||
|
"type": "module",
|
||||||
|
"author": "Entity Seven Group",
|
||||||
|
"license": "MIT",
|
||||||
|
"description": "Browser side of rage-fw-example",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"build": "tsc && vite build",
|
"build": "tsc && vite build",
|
||||||
@@ -8,8 +12,8 @@
|
|||||||
"preview": "vite preview"
|
"preview": "vite preview"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@entityseven/rage-fw-rpc": "0.2.5",
|
"@entityseven/rage-fw-rpc": "workspace:*",
|
||||||
"@rage-fw/shared": "workspace:^",
|
"@entityseven/rage-fw-browser": "workspace:*",
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0"
|
"react-dom": "^18.2.0"
|
||||||
},
|
},
|
||||||
@@ -22,11 +26,7 @@
|
|||||||
"eslint": "^8.57.0",
|
"eslint": "^8.57.0",
|
||||||
"eslint-plugin-react-hooks": "^4.6.0",
|
"eslint-plugin-react-hooks": "^4.6.0",
|
||||||
"eslint-plugin-react-refresh": "^0.4.6",
|
"eslint-plugin-react-refresh": "^0.4.6",
|
||||||
"typescript": "^5.6.3",
|
"typescript": "^5.7.3",
|
||||||
"vite": "^5.4.10"
|
"vite": "^5.2.0"
|
||||||
},
|
}
|
||||||
"type": "module",
|
|
||||||
"license": "CC BY-ND",
|
|
||||||
"author": "Entity Seven Group",
|
|
||||||
"version": "0.1.0"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,20 @@
|
|||||||
|
import { fw } from '@entityseven/rage-fw-browser'
|
||||||
import { useEffect, useState } from 'react'
|
import { useEffect, useState } from 'react'
|
||||||
import { events } from '@rage-fw/shared'
|
|
||||||
import { rpc } from '@/lib'
|
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
const [data, setData] = useState<string>('')
|
const [data, setData] = useState('initial')
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
rpc.register(events.browser.customBrowserEvent, (args: string) => {
|
fw.event.register('customBrowserEvent', async message => {
|
||||||
setData(prev => prev + ' | ' + args)
|
setData(p => p + ' | ' + message)
|
||||||
return 'response from cef'
|
|
||||||
|
const response = await fw.event.triggerServer('customServerEvent', [
|
||||||
|
'hello from browser',
|
||||||
|
])
|
||||||
|
setData(p => p + ' | ' + response)
|
||||||
|
|
||||||
|
return 'response from browser'
|
||||||
})
|
})
|
||||||
rpc.callClient(events.client.cefReady, ['hello from cef'])
|
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
import { Rpc } from '@entityseven/rage-fw-rpc'
|
|
||||||
|
|
||||||
export const rpc = new Rpc({
|
|
||||||
debugLogs: true,
|
|
||||||
})
|
|
||||||
@@ -22,11 +22,7 @@
|
|||||||
"types": [
|
"types": [
|
||||||
"../../node_modules/@ragempcommunity/types-cef",
|
"../../node_modules/@ragempcommunity/types-cef",
|
||||||
"../shared/declarations/rage-fw-shared-types/"
|
"../shared/declarations/rage-fw-shared-types/"
|
||||||
],
|
]
|
||||||
"paths": {
|
|
||||||
"@": ["./src"],
|
|
||||||
"@/*": ["./src/*"],
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"include": ["src"],
|
"include": ["src"],
|
||||||
"references": [{ "path": "./tsconfig.node.json" }]
|
"references": [{ "path": "./tsconfig.node.json" }]
|
||||||
|
|||||||
@@ -6,12 +6,6 @@ export default defineConfig({
|
|||||||
plugins: [react()],
|
plugins: [react()],
|
||||||
build: {
|
build: {
|
||||||
outDir: '../../server/client_packages/cef',
|
outDir: '../../server/client_packages/cef',
|
||||||
emptyOutDir: true,
|
emptyOutDir: true
|
||||||
},
|
}
|
||||||
resolve: {
|
|
||||||
alias: {
|
|
||||||
'@': './src',
|
|
||||||
'@/*': './src/*',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
{
|
{
|
||||||
"name": "rage-fw-example-client",
|
"name": "rage-fw-example-client",
|
||||||
"description": "Client side of Rage-FW example",
|
"version": "0.1.0",
|
||||||
|
"author": "Entity Seven Group",
|
||||||
|
"license": "MIT",
|
||||||
|
"description": "Client side of rage-fw-example",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "esbuild src/index.ts --bundle --platform=node --outfile=../../server/client_packages/index.js --format=esm"
|
"build": "esbuild src/index.ts --bundle --platform=node --outfile=../../server/client_packages/index.js --format=esm"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@entityseven/rage-fw-rpc": "0.2.5",
|
"@entityseven/rage-fw-rpc": "workspace:*",
|
||||||
"@rage-fw/shared": "workspace:^"
|
"@entityseven/rage-fw-client": "workspace:*"
|
||||||
},
|
}
|
||||||
"license": "CC BY-ND",
|
|
||||||
"author": "Entity Seven Group",
|
|
||||||
"version": "0.1.0"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,14 @@
|
|||||||
import { events } from '@rage-fw/shared'
|
import { fw } from '@entityseven/rage-fw-client'
|
||||||
import { rpc } from './lib'
|
|
||||||
|
|
||||||
rpc.browser = mp.browsers.new('package://cef/index.html')
|
fw.player.browser = mp.browsers.new('package://cef/index.html')
|
||||||
|
|
||||||
rpc.register(events.client.cefReady, async (args: string) => {
|
fw.event.register('customClientEvent', async msg => {
|
||||||
mp.console.logInfo(args)
|
fw.system.log.info(msg)
|
||||||
const res = (await rpc.callServer(events.server.customServerEvent, [
|
|
||||||
|
const response = await fw.player.triggerBrowser('customBrowserEvent', [
|
||||||
'hello from client',
|
'hello from client',
|
||||||
])) as string
|
])
|
||||||
mp.console.logInfo(res)
|
fw.system.log.info(response)
|
||||||
return 'response from client'
|
|
||||||
})
|
|
||||||
|
|
||||||
rpc.register(events.client.cefReady, async (args: string) => {
|
|
||||||
mp.console.logInfo(args)
|
|
||||||
const res = (await rpc.callBrowser(events.browser.customBrowserEvent, [
|
|
||||||
'hello from client',
|
|
||||||
])) as string
|
|
||||||
mp.console.logInfo(res)
|
|
||||||
return 'response from client'
|
return 'response from client'
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
import { Rpc } from '@entityseven/rage-fw-rpc'
|
|
||||||
|
|
||||||
export const rpc = new Rpc({
|
|
||||||
debugLogs: true,
|
|
||||||
})
|
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
{
|
{
|
||||||
"name": "rage-fw-example-server",
|
"name": "rage-fw-example-server",
|
||||||
"description": "Server side of Rage-FW example",
|
"version": "0.1.0",
|
||||||
|
"author": "Entity Seven Group",
|
||||||
|
"license": "MIT",
|
||||||
|
"description": "Server side of rage-fw-example",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "esbuild src/index.ts --bundle --platform=node --target=node10.4 --outfile=../../server/packages/server/index.js"
|
"build": "esbuild src/index.ts --bundle --platform=node --target=node10.4 --outfile=../../server/packages/server/index.js"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@entityseven/rage-fw-rpc": "0.2.5",
|
"@entityseven/rage-fw-rpc": "workspace:*",
|
||||||
"@rage-fw/shared": "workspace:^"
|
"@entityseven/rage-fw-server": "workspace:*"
|
||||||
},
|
}
|
||||||
"license": "CC BY-ND",
|
|
||||||
"author": "Entity Seven Group",
|
|
||||||
"version": "0.1.0"
|
|
||||||
}
|
}
|
||||||
|
|||||||
+19
-14
@@ -1,20 +1,25 @@
|
|||||||
import { events } from '@rage-fw/shared'
|
import { fw } from '@entityseven/rage-fw-server'
|
||||||
import { rpc } from './lib'
|
|
||||||
|
|
||||||
rpc.register('playerJoin', async (player: PlayerMp) => {
|
fw.event.register('playerJoin', async player => {
|
||||||
console.log(`[Server] ${player.socialClub} connected`)
|
fw.system.log.info('Connected:', player.socialClub)
|
||||||
})
|
|
||||||
|
|
||||||
rpc.register(
|
const response = await fw.player.triggerClient(
|
||||||
events.server.customServerEvent,
|
|
||||||
async (player: PlayerMp, args: string) => {
|
|
||||||
console.log(args)
|
|
||||||
const res = await rpc.callClient(
|
|
||||||
player,
|
player,
|
||||||
events.client.customClientEvent,
|
'customClientEvent',
|
||||||
['hello from server'],
|
['hello from server'],
|
||||||
)
|
)
|
||||||
console.log(res)
|
fw.system.log.info(response)
|
||||||
|
})
|
||||||
|
|
||||||
|
fw.event.register('customServerEvent', async (player, msg) => {
|
||||||
|
fw.system.log.info(player.socialClub, msg)
|
||||||
|
|
||||||
|
const response = await fw.player.triggerBrowser(
|
||||||
|
player,
|
||||||
|
'customBrowserEvent',
|
||||||
|
['hello from server'],
|
||||||
|
)
|
||||||
|
fw.system.log.info(player.socialClub, response)
|
||||||
|
|
||||||
return 'response from server'
|
return 'response from server'
|
||||||
},
|
})
|
||||||
)
|
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
import { Rpc } from '@entityseven/rage-fw-rpc'
|
|
||||||
|
|
||||||
export const rpc = new Rpc({
|
|
||||||
debugLogs: true,
|
|
||||||
})
|
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"extends": "../../tsconfig.json",
|
"extends": "../../tsconfig.json",
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"lib": ["DOM", "ESNext"],
|
|
||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
"baseUrl": "./src",
|
"baseUrl": "./src",
|
||||||
"types": [
|
"types": [
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
declare module '@entityseven/rage-fw-shared-types' {
|
||||||
|
export interface RageFW_ICustomClientEvent {
|
||||||
|
customClientEvent(greetings: string): string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface RageFW_ICustomServerEvent {
|
||||||
|
customServerEvent(greetings: string): string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface RageFW_ICustomBrowserEvent {
|
||||||
|
customBrowserEvent(greetings: string): string
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
export const events = {
|
|
||||||
server: {
|
|
||||||
customServerEvent: 'customServerEvent',
|
|
||||||
},
|
|
||||||
client: {
|
|
||||||
cefReady: 'cefReady',
|
|
||||||
customClientEvent: 'customClientEvent',
|
|
||||||
},
|
|
||||||
browser: {
|
|
||||||
customBrowserEvent: 'customBrowserEvent',
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@rage-fw/shared",
|
|
||||||
"description": "Shared data for Rage-FW example",
|
|
||||||
"version": "0.1.0",
|
|
||||||
"main": "index.ts"
|
|
||||||
}
|
|
||||||
+27
-13
@@ -1,30 +1,44 @@
|
|||||||
{
|
{
|
||||||
"name": "framework-example",
|
"name": "framework-example",
|
||||||
"description": "This project is an example of RAGE FW usage",
|
"description": "This project is example of RAGE FW usage.",
|
||||||
"workspaces": [
|
"workspaces": [
|
||||||
"apps/*"
|
"apps/*"
|
||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"server:update": "cd server && rage-win64.exe",
|
"server:update": "cd server && rage-win64.exe",
|
||||||
"server:run": "cd server && ragemp-server.exe",
|
|
||||||
"i:client": "cd apps/client && pnpm i",
|
|
||||||
"i:server": "cd apps/server && pnpm i",
|
|
||||||
"i:browser": "cd apps/browser && pnpm i",
|
|
||||||
"build:client": "cd apps/client && pnpm build",
|
"build:client": "cd apps/client && pnpm build",
|
||||||
"build:server": "cd apps/server && pnpm build",
|
"build:server": "cd apps/server && pnpm build",
|
||||||
"build:browser": "cd apps/cef && pnpm build",
|
"build:browser": "cd apps/browser && pnpm build",
|
||||||
"build:all": "pnpm build:client && pnpm build:server && pnpm build:browser",
|
"build:all": "pnpm build:client && pnpm build:server && pnpm build:browser"
|
||||||
"build": "pnpm build:all"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@ragempcommunity/types-cef": "^2.1.8",
|
||||||
"@ragempcommunity/types-client": "^2.1.8",
|
"@ragempcommunity/types-client": "^2.1.8",
|
||||||
"@ragempcommunity/types-server": "^2.1.8",
|
"@ragempcommunity/types-server": "^2.1.8",
|
||||||
"@ragempcommunity/types-cef": "^2.1.8",
|
|
||||||
"esbuild": "^0.21.5",
|
"esbuild": "^0.21.5",
|
||||||
"typescript": "^5.4.5",
|
"prettier": "^3.3.2",
|
||||||
"prettier": "^3.3.2"
|
"typescript": "^5.7.3"
|
||||||
},
|
},
|
||||||
"license": "MIT",
|
|
||||||
"author": "Entity Seven Group",
|
"author": "Entity Seven Group",
|
||||||
"version": "0.1.0"
|
"license": "MIT",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"pnpm": {
|
||||||
|
"onlyBuiltDependencies": [
|
||||||
|
"esbuild"
|
||||||
|
],
|
||||||
|
"overrides": {
|
||||||
|
"@entityseven/rage-fw-rpc": "link:..\\rage-framework\\rpc",
|
||||||
|
"@entityseven/rage-fw-browser": "link:..\\rage-framework\\browser",
|
||||||
|
"@entityseven/rage-fw-client": "link:..\\rage-framework\\client",
|
||||||
|
"@entityseven/rage-fw-server": "link:..\\rage-framework\\server",
|
||||||
|
"@entityseven/rage-fw-shared-types": "link:..\\rage-framework\\shared-types"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@entityseven/rage-fw-browser": "link:..\\rage-framework\\browser",
|
||||||
|
"@entityseven/rage-fw-client": "link:..\\rage-framework\\client",
|
||||||
|
"@entityseven/rage-fw-rpc": "link:..\\rage-framework\\rpc",
|
||||||
|
"@entityseven/rage-fw-server": "link:..\\rage-framework\\server",
|
||||||
|
"@entityseven/rage-fw-shared-types": "link:..\\rage-framework\\shared-types"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-1
@@ -1,2 +1,5 @@
|
|||||||
packages:
|
packages:
|
||||||
- "apps/*"
|
- "apps/browser"
|
||||||
|
- "apps/client"
|
||||||
|
- "apps/server"
|
||||||
|
- "apps/shared"
|
||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"target": "ESNext",
|
"target": "ESNext",
|
||||||
"lib": ["ESNext", "ES2019"],
|
"lib": ["ESNext", "ES2019"],
|
||||||
"moduleResolution": "node",
|
"moduleResolution": "bundler",
|
||||||
"module": "ESNext",
|
"module": "ESNext",
|
||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
|
|||||||
Reference in New Issue
Block a user