Chuyển đến nội dung chính

Hướng dẫn điều khiển ứng dụng Desktop qua giao diện Website sử dụng Web Socket

Hôm nay, mình xin hướng dẫn các bạn sử dụng công nghệ Web Socket để đồng bộ dữ liệu Real time giữa ứng dụng website và ứng dụng winform.

Với công nghệ ngày nay, ứng dụng các bạn viết đều có thể sử dụng tương tác qua lại giữa các công nghệ khác nhau: giữa ứng dụng Winform và web hay Android, Ios...

Câu hỏi đặt ra là: nếu bạn vừa cập nhật dữ liệu từ trên giao diện website thì làm sao ứng dụng biết được và load dữ liệu thông tin vừa mới cập nhật lên ứng dụng.

Có rất nhiều công nghệ để các bạn sử dụng:

- Các bạn có thể sử dụng công nghệ Sql Dependency trong Sqlserver để biết được dữ liệu thay đổi. Vậy Sql dependency là gì? các bạn có thể tham khảo tại bài viết trước.

Hướng dẫn sử dụng Sql denpendency

- Trong bài viết này, mình xin ứng dụng các bạn sử dụng Websocket công nghệ không còn mới mẻ gì? nhưng vẫn ứng dụng được tốt, cho các yêu cầu các bạn cần sử dụng, để Real time.

Ngoài công nghệ Web socket các bạn có thể tham khảo sử dụng Nodejs. Nhưng trong bài viết này, mình sử dụng công nghệ Ratchet PHP để tạo Websocket. Các bạn có thể, vào truy cập vào trang web http://socketo.me/ để tìm hiểu về Reatchet.

Như hình bên dưới mình tạo webserver qua đường dẫn: ws://127.0.0.1:2000, và lắng nghe qua port 2000.

Giao diện Web Client điều khiển ứng dụng:


Dưới đây là code của ứng dụng demo bằng VB.NET.

Trong bài viết, này cũng có sử dụng json để đọc lệnh sử dụng các bạn có thể tham khảo bài viết về các sử dụng json trong bài viết:

Hướng dẫn lấy dữ liệu json từ website sử dụng Web Services
Còn bên dưới là đoạn code.

Imports System.ComponentModel
Imports System.Text
Imports Newtonsoft.Json
Imports WebSocket4Net


Partial Public Class Form1
Inherits DevExpress.XtraEditors.XtraForm
Shared Sub New()
DevExpress.UserSkins.BonusSkins.Register()
DevExpress.Skins.SkinManager.EnableFormSkins()
End Sub
Public Sub New()
InitializeComponent()
End Sub
Private websocket As WebSocket4Net.WebSocket
Private Sub SimpleButton1_Click(sender As Object, ev As EventArgs) Handles SimpleButton1.Click
websocket = New WebSocket4Net.WebSocket(TextBox1.Text)
AddHandler websocket.Opened, Sub(s, e) socketOpened(s, e)
AddHandler websocket.Error, Sub(s, e) socketError(s, e)
AddHandler websocket.Closed, Sub(s, e) socketClosed(s, e)
AddHandler websocket.MessageReceived, Sub(s, e) socketMessage(s, e)
AddHandler websocket.DataReceived, Sub(s, e) socketDataReceived(s, e)
websocket.Open()
Label2.Text = "Status: Connecting " & TextBox1.Text
End Sub
Public Sub listen(str As String)
Label3.Text = str
End Sub
Sub socketOpened(s As Object, e As EventArgs)
websocket.Send("{""action"":""message"",""username"":""chatwindow"",""msg"":""Hello World""}")
End Sub
Sub socketClosed(s As Object, e As EventArgs)

End Sub
Sub socketError(s As Object, e As SuperSocket.ClientEngine.ErrorEventArgs)

End Sub
Public Sub heynow()
AxWindowsMediaPlayer1.URL = "heynow.mp3"
AxWindowsMediaPlayer1.Ctlcontrols.play()
setLabelTxt("Đang mở bài hát Hey Now MK2 - V-Angels", Label3)
End Sub
Public Sub faded()
AxWindowsMediaPlayer1.URL = "faded.mp3"
AxWindowsMediaPlayer1.Ctlcontrols.play()
setLabelTxt("Đang mở bài hát Faded - Alan Walker", Label3)
End Sub
Public Sub tatnhac()
AxWindowsMediaPlayer1.Ctlcontrols.stop()
setLabelTxt("Bạn đang tắt nhạc", Label3)
End Sub
Public Sub socketMessage(s As Object, e As WebSocket4Net.MessageReceivedEventArgs)
Dim m As Message = JsonConvert.DeserializeObject(Of Message)(e.Message)
If m.msg = "heynow" Then
heynow()
ElseIf m.msg = "faded" Then
faded()
ElseIf m.msg = "mo_word" Then
Process.Start("winword")
setLabelTxt("Yêu cầu mở chương trình Ms - Word", Label3)
ElseIf m.msg = "mo_paint" Then
Process.Start("mspaint")
setLabelTxt("Yêu cầu mở chương trình MSPaint", Label3)
ElseIf m.msg = "tatungdung" Then
Application.Exit()
ElseIf m.msg = "tatnhac" Then
tatnhac()
Else
setLabelTxt("Cú pháp không đúng", Label3)
End If
End Sub
Sub socketDataReceived(ss As Object, e As WebSocket4Net.DataReceivedEventArgs)

End Sub
Public Shared Sub setLabelTxt(ByVal text As String, ByVal lbl As Label)
If lbl.InvokeRequired Then
lbl.Invoke(New setLabelTxtInvoker(AddressOf setLabelTxt), text, lbl)
Else
lbl.Text = text
End If
End Sub
Public Delegate Sub setLabelTxtInvoker(ByVal text As String, ByVal lbl As Label)
End Class
Public Class Message
Public Property action() As String
Get
Return m_action
End Get
Set
m_action = Value
End Set
End Property
Private m_action As String
Public Property username() As String
Get
Return m_username
End Get
Set
m_username = Value
End Set
End Property
Private m_username As String
Public Property msg() As String
Get
Return m_msg
End Get
Set
m_msg = Value
End Set
End Property
Private m_msg As String
End Class

Còn Bên Dưới Là Video DEMO Của Tác Giả


Chúc các bạn thành công. Mọi câu hỏi thắc mắc đến bài viết xin truy cập BỜM KHÙNG để được support.

ĐỪNG QUÊN LIKE AND SHARE NHA CÁC BẠN.

CÁM ƠN CÁC BẠN ĐÃ THEO DÕI.

Download

Nhận xét

  1. Trả lời
    1. Cảm ơn bạn đã theo dỏi tất cả các bài đăng của tôi. /^^/

      Xóa
  2. Trả lời
    1. Cái này ko phải của a viết đâu. Trên trang laptrinhvb.net đấy ;) a chỉ viết mấy cái ngơ ngơ là chủ yếu thôi. Hehe

      Xóa

Đăng nhận xét

Bài đăng phổ biến từ blog này

[Blogger] Gỡ bỏ bản quyền template Blogspot không bị chuyển hướng

Xin chào các blogger, hẳn khi làm blog bạn chẳng còn xa lạ gì những trang cung cấp template nổi tiếng như soratemplates, gooyaabitemplates,... đúng không. Mỗi khi bạn tải template về thường có 2 tùy chọn đó là bản free và bản premium. Sự khác biệt giữa chúng là quá rõ ràng kể đến như support hoặc mã hóa code,...


Dân nghèo như chúng ta thường chỉ chơi bản free thôi, và đương nhiên sẽ có nhiều template dính quả bản quyền thần chưởng, ở đó thì họ thường gắn tên vào cuối footer và khi ta xóa dòng đó đi web site sẽ tự động chuyển hướng tới trang chủ của họ. Nói chung ta không nên xóa bản quyền template đi vì đó thể hiện sự tôn trọng tới người đã tạo ra template cho ta sử dụng.

Còn trong khuôn khổ bài viết này hung1001 sẽ cùng bạn tìm hiểu cách gỡ và thêm bản quyền của bạn vào nếu như bạn thích.


Ở đây tôi làm mẫu với template Treasury của Sora bản free. Đây là dòng tác giả đã chèn bản quyền và có đoạn js điều hướng nếu dòng bị xóa


Nhiệm vụ của bạn đó là đi dò toàn bộ các đoạn mã js đã bị mã hó…

[Blogger] Tạo hiệu ứng tuyết rơi chào đón Noel cho blogspot

Noel sắp đến để tăng thêm hiệu ứng cho blog của bạn hãy thêm vào 1 chút hiệu ứng tuyết rơi để cho không khí thêm sôi động


Cách làm cực kì đơn giản:

Đăng nhập vào blogChọn mẫu và vào phần chỉnh sửa htmlBạn để đoạn code sau vào giữa cặp thẻ <body> ... </body>
<script src='https://cdn.rawgit.com/hung1001/blogspot/master/js/tuyetroi.js'/>

Code nhúng trực tiếp vào web không thông qua host

<script type="text/javascript">
//<![CDATA[
var snowmax=100
var snowcolor=new Array("#f2f8fa","#eff5f7","#dcedf1","#ffffff")
var snowtype=new Array("Times","Arial","Times","Verdana")
var snowletter="*"
var sinkspeed=1
var snowmaxsize=30
var snowminsize=20
// Set 1 for all-over-snowing, set 2 for left-side-snowing
// Set 3 for center-snowing, set 4 for right-side-snowing
var snowingzone=1
// Do not edit below this line
var snow=new Array()
var marginbottom
var marginright
var timer
var i_snow=0
v…

Share Template Mudah Grid Responsive.

Chào mọi người, dạo gần đây mình thấy có một bản mẫu blogspot đi kèm với một giao diện khá thân thiện nên mình cũng đem về rồi nhờ người anh em thân thiết xóa cái bản quyền template đi rồi share cho anh em dùng.  ƯU ĐIỂMLoad nhanhSEO tốtChuẩn responsiveRecent labelButton ShareFollow by emailBreadcrumbs...NHƯỢC ĐIỂMThì mình chưa tìm ra. Cách nhận template- Comment link share trên mạng xã hội ( tùy tâm ) - Comment mail phía dưới. Lưu ý: Bản này hoàn toàn đã xóa bản quyền rồi nhé.
Xem Demo