summaryrefslogtreecommitdiff
path: root/src/webchannel/qwebsockettransport.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/webchannel/qwebsockettransport.cpp')
-rw-r--r--src/webchannel/qwebsockettransport.cpp26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/webchannel/qwebsockettransport.cpp b/src/webchannel/qwebsockettransport.cpp
index 9a432fe..8c25a9b 100644
--- a/src/webchannel/qwebsockettransport.cpp
+++ b/src/webchannel/qwebsockettransport.cpp
@@ -50,9 +50,10 @@ QT_USE_NAMESPACE
//BEGIN QWebSocketTransportPrivate
-QWebSocketTransportPrivate::QWebSocketTransportPrivate(QObject *parent)
+QWebSocketTransportPrivate::QWebSocketTransportPrivate(QWebSocketTransport *transport, QObject *parent)
: QWebSocketServer(QStringLiteral("QWebChannel Server"), NonSecureMode, parent)
, m_messageHandler(Q_NULLPTR)
+ , m_transport(transport)
, m_useSecret(true)
, m_starting(false)
{
@@ -76,10 +77,14 @@ void QWebSocketTransportPrivate::initLater()
m_starting = true;
}
-void QWebSocketTransportPrivate::sendMessage(const QString &message)
+void QWebSocketTransportPrivate::sendMessage(const QString &message, int clientId)
{
- foreach (QWebSocket *client, m_clients) {
- client->sendTextMessage(message);
+ if (clientId == -1) {
+ foreach (QWebSocket *client, m_clients) {
+ client->sendTextMessage(message);
+ }
+ } else {
+ m_clients.at(clientId)->sendTextMessage(message);
}
}
@@ -132,7 +137,8 @@ void QWebSocketTransportPrivate::socketError()
void QWebSocketTransportPrivate::messageReceived(const QString &message)
{
if (m_messageHandler) {
- m_messageHandler->handleMessage(message);
+ QWebSocket *client = qobject_cast<QWebSocket*>(sender());
+ m_messageHandler->handleMessage(message, m_transport, m_clients.indexOf(client));
}
emit textDataReceived(message);
}
@@ -153,7 +159,7 @@ void QWebSocketTransportPrivate::clientDisconnected()
QWebSocketTransport::QWebSocketTransport(QObject *parent)
: QObject(parent)
- , d(new QWebSocketTransportPrivate)
+ , d(new QWebSocketTransportPrivate(this))
{
connect(d.data(), SIGNAL(textDataReceived(QString)),
SIGNAL(messageReceived(QString)));
@@ -172,14 +178,14 @@ QWebSocketTransport::~QWebSocketTransport()
}
-void QWebSocketTransport::sendMessage(const QByteArray &message) const
+void QWebSocketTransport::sendMessage(const QByteArray &message, int clientId) const
{
- d->sendMessage(QString::fromUtf8(message));
+ d->sendMessage(QString::fromUtf8(message), clientId);
}
-void QWebSocketTransport::sendMessage(const QString &message) const
+void QWebSocketTransport::sendMessage(const QString &message, int clientId) const
{
- d->sendMessage(message);
+ d->sendMessage(message, clientId);
}
void QWebSocketTransport::setMessageHandler(QWebChannelMessageHandlerInterface *handler)