aardio 文档

aardio 范例: WSS 服务端

//WSS 服务端
import win.ui;
/*DSG{{*/
var winform = win.form(text="wss 服务端";right=759;bottom=469)
winform.add(
edit={cls="edit";left=12;top=13;right=744;bottom=448;edge=1;multiline=1;z=1}
)
/*}}*/

import console; 
import web.SocketSharp;//打开控制台可查看服务端错误输出

//加载 SSL 证书后可改为 wss:// 。
var wssv = web.SocketSharp.Server.WebSocketServer("wss://localhost:8877") 

//生成测试证书,ws 协议不需要
import web.SocketSharp.Pfx;
wssv.SslConfiguration.ServerCertificate = System.Security.Cryptography.X509Certificates.X509Certificate2(
    web.SocketSharp.Pfx("/test.pfx","123456") 
);

/*
第二个参数用于定义一个 WebSocket 会话类。
每次创建新的 WebSocket 连接时会调用类创建WebSocket 会话实例。 
*/
wssv.AddWebSocketService("/echo",class {

    onMessage = function(e){
        /*
        this.socket 会自动绑定为 WebSocketSharp.Server.WebSocketBehavior 实例。
        用法请参考 WebSocketSharp 文档。

        必须定义 this.onMessage 事件用于接收消息。
        可选定义 this.onOpen, this.onClose, this.onError 事件。
        这几个事件与 WebSocketSharp.Server.WebSocketBehavio 的同名事件用法相同。
        唯一不同的是首字母小写。

        this.send() 等价于调用 this.socket.Send()
        this.sendAsync() 等价于调用 this.socket.SendAsync()
        唯一区别是首字母小写。
        */ 

        winform.edit.print("服务端收到消息",e.data)

        //同步发送,群发用 this.broadcast
        this.send("你好我是服务端")

        //异步发送,成功回调参数 @2,异步群发用 broadcastAsync
        this.sendAsync("你好我是服务端",function(completed){

        } ) 
    }  
});

//启动服务器
wssv.Start();

winform.onDestroy = function(){ 
    wssv.Stop();//关闭服务器,不然下次启动,短时间内端口会是占用状态
}

winform.show();
win.loopMessage();
Markdown 格式