網路聊天室
# Smart之網路聊天室
# 1. 說明
通過Smart連線至FastWeb中的IsoBean模組,實現網路聊天室的功能。
通過範例學習,可以掌握RestAPI與WebSocket控制元件的使用方法,並與FastWeb的IsoBean結合實現網路聊天室的功能。
關於IsoBean的相關內容可參考 Bean通訊 與 IsoBean開發流程 。請注意,使用此示例需要配合FastWeb使用。
# 2. 設計明細
開啟Smart智慧控制平臺,分別加入下插圖之控制元件。或者通過點選功能表欄[檔案] - [打開專案]選擇專案打開該範例。

1:TLabel元件,控制元件名稱為 Label1。
2:TIsoBeanServer元件,控制元件名稱為 IsoBeanServer1。
3:TIsoBeanSource元件,控制元件名稱為 IsoBeanSource1。
4:TRestAPI元件,控制元件名稱為 RestAPI1。
5:TWebSocketClient元件,控制元件名稱為 WebSocketClient1。
6:TIsoBeanVision元件,控制元件名稱為 IsoBeanVision1。
7:TLabel元件,控制元件名稱為 Label2。
8:TEdit元件,控制元件名稱為 Edit2。
9:TLabel元件,控制元件名稱為 Label3。
10:TEdit元件,控制元件名稱為 Edit3。
11:TButton元件,控制元件名稱為 Button1。
12:TButton元件,控制元件名稱為 Button2。
Main窗體屬性設定
Caption:主窗體標題,設定為IsoBean Demo。Height:窗體的畫素高度=768。Width:窗體的畫素寬度=1024。Color:設定背景顏色,設定為$00F3F3EF。
1:Label1屬性設定
Caption:設定標籤顯示的文字,設定為網路聊天室。Font:設定顯示的字型內容,雙擊屬性編輯框,打開字型設定界面,設定的界面內容如下。

2:IsoBeanServer1屬性設定
Server:設定IsoBean伺服器的地址,示例設定為http://localhost:8888/。UserKey:設定發佈使用者的授權碼。表示為使用者的唯一ID。
3:IsoBeanSource1屬性設定
IsoBeanServer:選擇繫結的IsoBean伺服器,設定為IsoBeanServer1。
在控制元件處使用滑鼠右鍵單擊,選擇
Properties...,打開IsoBean屬性編輯頁面,在IsoBean處填寫編號IB_wb-vis-0008_chatroom,點選[從伺服器下載參數],將參數下載至本地。點選[確定]按鈕確認屬性設定。
4:RestAPI屬性設定
雙擊控制元件,打開編輯對話方塊,按照圖中的設定項進行設定。

5:WebSocketClient1屬性設定
Host:設定WebSocket伺服器的主機地址,設定為127.0.0.1。Port:設定WebSocket伺服器監聽的埠,設定為8805。Options:設定屬性項,設定其中的Parameters項為/message。
6:IsoBeanVision1屬性設定
Active:設定是否啟用顯示,設定為True。IsoBeanSource:設定繫結的 IsoBeanSource,設定為IsoBeanSource1。
7:Label2屬性設定
Caption:設定顯示的字幕內容。設定為發送使用者名稱。Font:設定顯示的字型,雙擊打開字型設定視窗,按照下述方式進行設定。

8:Edit2屬性設定 *
Font:設定顯示的字型內容,雙擊屬性編輯框,打開字型設定界面,設定的界面內容如下。
Text:設定編輯框中顯示的文字,設定為demo。
9:Label3屬性設定
Caption:設定顯示的字幕內容。設定為發送內容。Font:設定顯示的字型,雙擊打開字型設定視窗,按照下述方式進行設定。

10:Edit3屬性設定
Font:設定顯示的字型內容,雙擊屬性編輯框,打開字型設定界面,設定的界面內容如下。

Text:設定編輯框中顯示的文字,設定為Hello IsoBean Smart Client。
11:Button1屬性設定
Caption:設定界面顯示的文字內容,設定為API發送。
12:Button2屬性設定
Caption:設定界面顯示的文字內容,設定為WS發送。
# 3. 程式設計
# 3.1. 程式初始設定
程式初始化時,設定瀏覽器控制元件初始化,WebSocket客戶端發起連線。
constructor TMyHandler.Create(AOwner: TComponent);
begin
FThis :=TBaseForm(AOwner);
FThis.WebSocketClient1.Active := true;
end;
2
3
4
5
# 3.2. 事件設定
- 11:Button1-OnClick事件
點選按鈕,使用API方式發送訊息。
procedure TMyHandler.Button1Click;
//API發送訊息
var
msg: String;
begin
msg := '{' +
'"username": "demo",' +
'"action": "callback",' +
'"tag": "0",' +
'"data": {' +
'"callbackcomponent": "wb-vis-0008_chatroom",' +
'"callbackeventname": "update",' +
'"callbackparams": [' +
'{' +
'"paramname": "user",' +
'"paramvalue": "' + FThis.Edit2.Text + '"' +
'},' +
'{' +
'"paramname": "message",' +
'"paramvalue": "'+ FThis.Edit3.Text + ' By RestAPI"' +
'}' +
']' +
'}' +
'}';
FThis.RestAPI1.Body.Text := msg;
FThis.RestAPI1.Send;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
- 12:Button2-OnClick事件
點選按鈕,使用WebSocket伺服器發送訊息。
procedure TMyHandler.Button2Click;
//WS發送
var
msg: String;
begin
msg := '{' +
'"username": "demo",' +
'"action": "callback",' +
'"tag": "0",' +
'"data": {' +
'"callbackcomponent": "wb-vis-0008_chatroom",' +
'"callbackeventname": "update",' +
'"callbackparams": [' +
'{' +
'"paramname": "user",' +
'"paramvalue": "' + FThis.Edit2.Text + '"' +
'},' +
'{' +
'"paramname": "message",' +
'"paramvalue": "'+ FThis.Edit3.Text + ' By WebSocket"' +
'}' +
']' +
'}' +
'}';
FThis.WebSocketClient1.WriteString(msg);
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
- 5:WebSocketClient1-OnConnect事件
當WebSocket客戶端連線至伺服器時,發送註冊訊息,進行會話ID註冊。
procedure TMyHandler.WebSocketClient1Connect;
//連線
begin
FThis.WebSocketClient1.WriteString('{"action":"login","sid":"smartdemo"}');
end;
2
3
4
5
# 4. 運行結果
使用滑鼠點選工具欄運行(Run),測試運行結果。
通過工具欄儲存,將程式儲存為 sdb 專案檔案。
運行等待瀏覽器控制元件初始化完成後,點選URL地址編輯欄右側的按鈕載入網頁,界面中顯示聊天的記錄內容。點選 [API發送] 與 [WebSocket發送] 可使用兩種方式發送訊息顯示。
