revision of example 'clog-demo'

This commit is contained in:
pls.153 2022-03-30 11:24:46 +02:00
parent 0aed433b52
commit 7cfe241a08
3 changed files with 55 additions and 46 deletions

View file

@ -3,6 +3,11 @@ import QtQuick.Controls 2.15
import QtWebView 1.15
Item {
Loader {
active: (Qt.platform.os === "ios")
source: "Server.qml"
}
WebView {
id: browser
objectName: "browser"

View file

@ -1,58 +1,12 @@
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtWebSockets 1.15
import "." as Ext
Rectangle {
id: page
color: "lavender"
Ext.Repl {}
// iOS only
WebSocketServer {
id: server
objectName: "server"
port: 8080
listen: (Qt.platform.os === "ios")
property int counter: 0
property var client
function send(message) {
client.sendTextMessage(message)
}
onClientConnected: {
client = webSocket
webSocket.objectName = ++counter
page.log("[new] " + counter)
Lisp.call("clog:webview/on-new-connection")
webSocket.onTextMessageReceived.connect(function(message) {
page.log(message)
Lisp.call("clog:webview/on-message", message)
})
webSocket.onStatusChanged.connect(function(status) {
var state
switch (status) {
case WebSocket.Closed: state = "close"; break
case WebSocket.Error: state = "error"; break
default: return
}
page.log("[status] " + state)
if (status === WebSocket.Closed) {
Lisp.call("clog:webview/on-close")
}
})
}
onErrorStringChanged: {
page.log("[server error] " + errorString)
}
}
function log(message) {
logModel.append({ message: message })
listView.positionViewAtEnd()

View file

@ -0,0 +1,50 @@
import QtQuick 2.15
import QtWebSockets 1.15
import "." as Ext
// for iOS only
Item {
WebSocketServer {
id: server
objectName: "server"
port: 8080
listen: true
property int counter: 0
property var client
function send(message) {
client.sendTextMessage(message)
}
onClientConnected: {
client = webSocket
webSocket.objectName = ++counter
main.log("[new] " + counter)
Lisp.call("clog:webview/on-new-connection")
webSocket.onTextMessageReceived.connect(function(message) {
main.log(message)
Lisp.call("clog:webview/on-message", message)
})
webSocket.onStatusChanged.connect(function(status) {
var state
switch (status) {
case WebSocket.Closed: state = "close"; break
case WebSocket.Error: state = "error"; break
default: return
}
main.log("[status] " + state)
if (status === WebSocket.Closed) {
Lisp.call("clog:webview/on-close")
}
})
}
onErrorStringChanged: {
main.log("[server error] " + errorString)
}
}
}