# DelphiWebsockets
Websockets and Socket.io for Delphi
See below for an event driven async example of an socket.io server and client:
```delphi
uses
IdWebsocketServer, IdHTTPWebsocketClient, superobject, IdSocketIOHandling;
var
server: TIdWebsocketServer;
client: TIdHTTPWebsocketClient;
const
C_CLIENT_EVENT = 'CLIENT_TO_SERVER_EVENT_TEST';
C_SERVER_EVENT = 'SERVER_TO_CLIENT_EVENT_TEST';
procedure ShowMessageInMainthread(const aMsg: string) ;
begin
TThread.Synchronize(nil,
procedure
begin
ShowMessage(aMsg);
end);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
server := TIdWebsocketServer.Create(Self);
server.DefaultPort := 12345;
server.SocketIO.OnEvent(C_CLIENT_EVENT,
procedure(const ASocket: ISocketIOContext; const aArgument: TSuperArray; const aCallback: ISocketIOCallback)
begin
//show request (threadsafe)
ShowMessageInMainthread('REQUEST: ' + aArgument[0].AsJSon);
//send callback (only if specified!)
if aCallback <> nil then
aCallback.SendResponse( SO(['succes', True]).AsJSon );
end);
server.Active := True;
client := TIdHTTPWebsocketClient.Create(Self);
client.Port := 12345;
client.Host := 'localhost';
client.SocketIOCompatible := True;
client.SocketIO.OnEvent(C_SERVER_EVENT,
procedure(const ASocket: ISocketIOContext; const aArgument: TSuperArray; const aCallback: ISocketIOCallback)
begin
ShowMessageInMainthread('Data PUSHED from server: ' + aArgument[0].AsJSon);
//server wants a response?
if aCallback <> nil then
aCallback.SendResponse('thank for the push!');
end);
client.Connect;
client.SocketIO.Emit(C_CLIENT_EVENT, SO([ 'request', 'some data']),
//provide callback
procedure(const ASocket: ISocketIOContext; const aJSON: ISuperObject; const aCallback: ISocketIOCallback)
begin
//show response (threadsafe)
ShowMessageInMainthread('RESPONSE: ' + aJSON.AsJSon);
end);
//start timer so server pushes (!) data to all clients
Timer1.Interval := 5 * 1000; //5s
Timer1.Enabled := True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := false;
server.SocketIO.EmitEventToAll(C_SERVER_EVENT, SO(['data', 'pushed from server']),
procedure(const ASocket: ISocketIOContext; const aJSON: ISuperObject; const aCallback: ISocketIOCallback)
begin
//show response (threadsafe)
TThread.Synchronize(nil,
procedure
begin
ShowMessage('RESPONSE from a client: ' + aJSON.AsJSon);
end);
end);
end;
```
没有合适的资源?快使用搜索试试~ 我知道了~
DelphiWebsockets-master.zip_delphi websocket_websocket_websocket
共37个文件
pas:22个
~1~:4个
dpr:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 2 下载量 4 浏览量
2022-07-14
17:52:35
上传
评论
收藏 158KB ZIP 举报
温馨提示
WebSocket for Delphi
资源详情
资源评论
资源推荐
收起资源包目录
DelphiWebsockets-master.zip (37个子文件)
DelphiWebsockets-master
IdWebsocketServer.pas 6KB
ROdemoWS.zip 31KB
__history
IdIOHandlerWebsocket.pas.~1~ 42KB
IdServerWebsocketContext.pas.~1~ 3KB
IdIOHandlerWebsocket.pas.~2~ 42KB
IdServerIOHandlerWebsocket.pas.~1~ 3KB
IdServerWebsocketHandling.pas.~1~ 13KB
superobject
superobject.pas 174KB
superxmlparser.pas 39KB
IdServerWebsocketHandling.pas 13KB
uROHTTPWebsocketServer.pas 11KB
IdServerSocketIOHandling.pas 7KB
uROSimpleEventRepository.pas 4KB
wsdefines_.pas 72B
uROIndyHTTPWebsocketChannel.pas 14KB
Demo
Unit1.dfm 813B
Unit1.pas 4KB
Project1.dpr 286B
__recovery
uROIdServerWebsocketHandling.pas 2KB
IdServerIOHandlerWebsocket.pas 3KB
IdSocketIOHandling.pas 53KB
IdIOHandlerWebsocket.pas 42KB
IdServerBaseHandling.pas 105B
.gitignore 3KB
IdServerWebsocketContext.pas 3KB
README.md 3KB
DUnit
mtTestROWebSockets.pas 9KB
NewService_Impl.pas 2KB
Win32
Debug
html
wstest.html 1KB
NewLibrary_Intf.pas 4KB
UnitTestWebsockets.dpr 817B
UnitTestWebsockets.res 96B
mtTestWebSockets.pas 9KB
NewLibrary_Invk.pas 3KB
.gitattributes 483B
RemObjectsSDK_WS.js 9KB
IdHTTPWebsocketClient.pas 45KB
共 37 条
- 1
朱moyimi
- 粉丝: 59
- 资源: 1万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论2