//WebSocket 异步服务端( WSS 服务端) import win.ui; /*DSG{{*/ var winform = win.form(text="WebSocket单线程异步服务端演示";left=10;top=4;right=774;bottom=467) winform.add( txtMessage={cls="edit";left=29;top=22;right=741;bottom=432;db=1;dl=1;dr=1;dt=1;edge=1;multiline=1;z=1} ) /*}}*/ import web.socket.server; var wsrv = web.socket.server(); //客户端使用HTTP请求切换到WebSocket协议 wsrv.onUpgradeToWebsocket = function(hSocket,request,response,protocol,origin){ if( request.path!="/aardio"){ //关闭应答即可拒绝请求 调用response.close()也可以 return response.errorStatus(404); } } //一个客户端连接过来了 wsrv.onOpen = function(hSocket){ var client = wsrv.client(hSocket); if(client) winform.txtMessage.print( client.getRemoteIp() ); wsrv.send(hSocket,"WebSocket客户端你好!") } //一个客户端掉线了 wsrv.onClose = function(hSocket,event){ winform.txtMessage.print("onClose",hSocket,event); } //一个客户端出错了 wsrv.onError = function(hSocket,err){ winform.txtMessage.print("onError",hSocket,err); } //一个客户端发消息过来了 wsrv.onMessage = function(hSocket,msg){ winform.txtMessage.print(hSocket,msg.data); wsrv.send(hSocket,"WebSocket客户端,收到了你发过来的消息:" + msg.data) } //启动服务端 if( wsrv.start(,8876) ){ winform.txtMessage.print( wsrv.getUrl() + "/aardio","已启动WebSocket服务器"); winform.txtMessage.print( wsrv.httpServer.getUrl(),"已启动HTTP服务器"); } else { winform.txtMessage.print("启动失败,建议修改端口号") } //同一个端口还可以同时运行HTTP服务端 wsrv.httpServer.run( function(response,request){ //winform.txtMessage.print( request ); winform.txtMessage.print("HTTP协议访问:",request.url); response.contentType = "text/json" response.jsonPrettyPrint = true; response.write(request) } ); winform.show() win.loopMessage();