Разработка приложений на C++_Практическая работа №14
.pdf
1. Установить хост и порт сервера, информационное сообщение сервера.
В spek файл добавить:
Requires: qt5-qtdeclarative-import-websockets
И проверить permissions в desktop файле.
MainPage.qml import QtQuick 2.6
import Sailfish.Silica 1.0 import QtWebSockets 1.0
Page{
Column {
width: parent.width height: parent.height
// SERVER
Rectangle {
width: parent.width height: parent.height /2 color: 'pink'
WebSocketServer {
id: server
listen: true port: 8080
onClientConnected: function(webSocket) { webSocket.onTextMessageReceived.connect(function(message) {
console.log("WebSocket connected")
});
}
onErrorStringChanged: {
console.log(qsTr("Server error: %1").arg(errorString));
}
Component.onCompleted: console.log(url)
}
}
}
}
Если закрыть виртуалку, то в консоли появится такое сообщение:
2. Реализовать функциональность обмена простыми сообщениями между клиентом и сервером.
MainPage.qml
import QtQuick 2.6 import Sailfish.Silica 1.0 import QtWebSockets 1.0
Page{ Column {
width: parent.width height: parent.height // CLIENT Rectangle {
width: parent.width height: parent.height /2 color: 'lightblue'
WebSocket { id: socket
url: "ws://127.0.0.1:8080" onTextMessageReceived: function(message) {
messageBoxClient.text = messageBoxClient.text + "\nReceived message: " + message
}
onStatusChanged: if (socket.status === WebSocket.Error) { console.log("Error: " + socket.errorString)
}else if (socket.status === WebSocket.Open) { socket.sendTextMessage("Hello World")
}else if (socket.status === WebSocket.Closed) {
messageBoxClient.text += "\nSocket closed"
}
active: false
}
Text {
id: messageBoxClient
text: socket.status === WebSocket.Open ? qsTr("Sending...") : qsTr("Welcome!")
anchors.centerIn: parent
}
MouseArea { anchors.fill: parent onClicked: {
socket.active = !socket.active
}
}
}
// SERVER
Rectangle {
width: parent.width height: parent.height /2 color: 'pink'
WebSocketServer { id: server
listen: true port: 8080
onClientConnected: function(webSocket) { webSocket.onTextMessageReceived.connect(function(message) {
messageBoxServer.text += "\n" + qsTr("Server received message: %1").arg(message);
webSocket.sendTextMessage(qsTr("Hello Client!")); console.log("WebSocket connected")
});
}
onErrorStringChanged: {
messageBoxServer.text += "\n" + qsTr("Server error: %1").arg(errorString);
console.log(qsTr("Server error: %1").arg(errorString));
}
Component.onCompleted: console.log(url)
}
Text {
id: messageBoxServer anchors.centerIn: parent
}
}
}
}
