马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 alltolove 于 2017-3-12 12:21 编辑
效果: 打开两个程序,点击一个程序后另外一个产生响应信息
我们首先要新建两个完全独立的QT项目
第一个项目代码:
main.qml文件:import QtQuick 2.5
import QtQuick.Window 2.2
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
MainForm {
}
}
MainForm.ui.qml文件:import QtQuick 2.5
Rect{}
Rect.qml文件:import QtQuick 2.0
import QtWebSockets 1.0
Rectangle {
width: 360
height: 360
WebSocket {
id: socket
url: "ws://127.0.0.1:8080"//这是本地的地址
onStatusChanged: if (socket.status == WebSocket.Error) {
console.log("Error: " + socket.errorString)
} else if (socket.status == WebSocket.Open) {
socket.sendTextMessage("Hello World")//如果接通就向接通方发送helloworld
} else if (socket.status == WebSocket.Closed) {
messageBox.text += "\nSocket closed"
}
active: false
}
Text {
id: messageBox
text: socket.status == WebSocket.Open ? qsTr("Sending...") : qsTr("Welcome!")
anchors.centerIn: parent
}
MouseArea {
anchors.fill: parent
onClicked: {
socket.active = !socket.active//点一下开启,再点一下关闭
}
}
}
第二个项目代码:
前两个文件跟第一个项目的一样
Rect.qml文件:import QtQuick 2.0
import QtWebSockets 1.0
Rectangle {
width: 360
height: 360
function appendMessage(message) {
messageBox.text += "\n" + message
}
WebSocketServer {
id: server
port:8080
listen: true
onClientConnected: {
webSocket.onTextMessageReceived.connect(function(message) {//用信号传过来的参数接收信息
appendMessage(qsTr("Server received message: %1").arg(message));//传过来的信息
});
}
onErrorStringChanged: {
appendMessage(qsTr("Server error: %1").arg(errorString));
}
}
Text {
id: messageBox
}
}
这个还可以跟网页通信,先打开服务器端,然后打开网页,服务器端就会产生响应,网页的html代码如下: <!DOCTYPE html>
<meta charset="utf-8" />
<title>WebSocket Test</title>
<script language="javascript" type="text/javascript">
var wsUri = "ws://127.0.0.1:8080";
var output;
function init()
{
output = document.getElementById("output");
testWebSocket();
}
function testWebSocket()
{
websocket = new WebSocket(wsUri);
websocket.onopen = function(evt) { onOpen(evt) };
websocket.onclose = function(evt) { onClose(evt) };
websocket.onmessage = function(evt) { onMessage(evt) };
websocket.onerror = function(evt) { onError(evt) };
}
function onOpen(evt)
{
writeToScreen("CONNECTED");
doSend("WebSocket rocks");
}
function onClose(evt)
{
writeToScreen("DISCONNECTED");
}
function onMessage(evt)
{
writeToScreen('<span style="color: blue;">RESPONSE: ' + evt.data+'</span>');
websocket.close();
}
function onError(evt)
{
writeToScreen('<span style="color: red;">ERROR:</span> ' + evt.data);
}
function doSend(message)
{
writeToScreen("SENT: " + message);
websocket.send(message);
}
function writeToScreen(message)
{
var pre = document.createElement("p");
pre.style.wordWrap = "break-word";
pre.innerHTML = message;
output.appendChild(pre);
}
window.addEventListener("load", init, false);
</script>
<h2>WebSocket Test</h2>
<div id="output"></div>
Preview: 明天我们实现一个简单的单工通信软件 |