API version 1

- ‐

open

WebSocketを開きます。

呼出形式一覧

呼出形式

説明

boolean open(string url[, integer nouse[, number timeout]])

urlに対してWebSocketを開きます。

戻り値一覧

戻り値

説明

boolean

WebSocket接続成功時true、それ以外はfalse。

引数一覧

引数

説明

url

接続先URL

ws:またはwss:で始まるURLを指定します。

nouse

使用されません。timeout指定時は何らかの数値を指定してください。

timeout

切断のタイムアウト時間(秒)

0は待機無し、-1は無制限待機となります。

省略時は30とみなします。

例外

コード

説明

CRS::Common::Net::Socket-1:4

ソケットはすでに開いています

関連項目

Socket.close メソッド



使用例 CRSダウンロード ダウンロード(WebSocketListenerS.crs)

Form WebSocket {
   X = 0;
   Y = 0;
   Width = 727;
   Height = 610;
   BgColor = new Color(255,204,255,255);

/*
  このサンプルは WebSocketListenerS とセットで使います
  初めに WebSocketListenerS を起動して start します
  次に WebSocketC を起動して 接続(open) します
  ポートは web標準の80 ポートを使います
*/
   number size=0;

   Label Label1 {
           X = 16;
           Y = 8;
           Width = 140;
           Height = 21;
           Value = "WEBクライアントソケット";
           var fon = new Font("", "", true);
           Font = fon;
   }

   WebSocket sock_client {
           Function OnReceive(e) {
                   ^.EdiString2.Value = ^.sock_client.Read(256);
                   # ReadLineのテストは以下を有効にする
                   /*var size=0;
                   while (true) {
                           var line = ^.sock_client.ReadLine();
                           if (line.length == 0) break;
                           ^.EdiString2.Value += line;
                           size += line.length;
                   }
                   ^.lblRSize[0] = size;  */
           }
   }

   Label Label2 {
           X = 16;
           Y = 38;
           Width = 57;
           Height = 19;
           Value = "接続先";
   }
   TextBox txtHost {
           X = 76;
           Y = 35;
           Width = 360;
           Height = 23;
           Value = "ws://localhost";
   }
   Label Label3 {
           X = 442;
           Y = 38;
           Width = 51;
           Height = 19;
           Value = "Port";
   }
   TextBox txtPort {
           X = 496;
           Y = 35;
           Width = 70;
           Height = 23;
           Value = 80;
   }
/*
   Label Label5 {
           X = 16;
           Y = 64;
           Width = 57;
           Height = 19;
           Value = "待機(秒)";
   }

   TextBox txtOpenWait {
           X = 76;
           Y = 62;
           Width = 70;
           Height = 23;
           Value = "30";
   }
   TextBox txtCloseWait {
           X = 149;
           Y = 62;
           Width = 70;
           Height = 23;
           Value = "30";
   }
*/
   Button btnOpen {
           X = 222;
           Y = 62;
           Width = 112;
           Height = 25;
           Title = "接続(Open)";

           Function OnTouch( e ) {
                   try {
                           if (^.sock_client.Open(^.txtHost, 0,  20 )) {
                                   ^.txtPort2 = ^.sock_client.port;
                                   ^.sock_client.writeTimeout = 15;
                                   ^.sock_client.readTimeout = 18 ;
                                   ^.sock_client.BufferSize = 256 ;
                                   ^.btnIsCon.PostEvent(new Event("TOUCH"));
                           } else {
                                   var ret = ^.sock_client.getError();
                                   MessageBox("code: " + str(ret.code) + " " + ret.message);
                           }

                   } catch(e) {
                           MessageBox("Message=" + str(e.Message) + "\nCategory=" + str(e.Category) + "\nCode="+ str(e.Code)  + "\nSubCode=" + str(e.subCode));
                           /* ^.sock_client[^.u].Close(); */
                   }
           }
   }
   Button btnClose {
           X = 222;
           Y = 89;
           Width = 112;
           Height = 25;
           Title = "切断(Close)";

           Function OnTouch( e ) {
                   try {
                           ^.sock_client.Close();
                           ^.EdiString2.Clear();
                           ^.btnIsCon.PostEvent(new Event("TOUCH"));
                   } catch(e) {
                           MessageBox("Message=" + str(e.Message) + "\nCategory=" + str(e.Category) + "\nCode="+ str(e.Code)  + "\nSubCode=" + str(e.subCode));
                   }
           }
   }

   Label lblIsCon {
           X = 338;
           Y = 63;
           Width = 69;
           Height = 25;

           Function OnClicked( e ) {
                   this.Clear();
           }
   }
   Button btnIsCon {
           X = 410;
           Y = 63;
           Width = 117;
           Height = 25;
           Title = "IsConnected";

           Function OnTouch( e ) {
                   try {
                           /* ^.lblIsCon.Value = ^.sock_client[^.u].IsConnected ? "接続中" : "切断中"; */
                           ^.lblIsCon.Value = ^.sock_client.IsConnected ? "接続中" : "切断中";
                   }
                   catch(e) {
                           MessageBox("Message=" + str(e.Message) + "\nCategory=" + str(e.Category) + "\nCode="+ str(e.Code)  + "\nSubCode=" + str(e.subCode));
                   }
           }
   }

   TextBox txtHost2 {
           X = 16;
           Y = 118;
           Width = 340;
           Height = 24;
           Editable = false;
   }
   TextBox txtPort2 {
           X = 357;
           Y = 118;
           Width = 79;
           Height = 24;
           Editable = false;
   }
   TextBox txtBuff2 {
           X = 437;
           Y = 118;
           Width = 78;
           Height = 24;
           Editable = false;
   }
   Button btnGetHost {
           X = 517;
           Y = 114;
           Width = 138;
           Height = 31;
           Title = "Host/Port/Buff取得";

           Function OnTouch( e ) {
                   ^.txtHost2 = ^.sock_client.Host;
                   ^.txtPort2 = ^.sock_client.Port;
                   ^.txtBuff2 = ^.sock_client.BufferSize;
           }
   }

   Label Label4 {
           X = 28;
           Y = 232;
           Width = 78;
           Height = 18;
           Value = "TextBox1";
           TabIndex = 2;
   }
   EditBox txtString {
           X = 28;
           Y = 252;
           Width = 163;
           Height = 70;
           TabIndex = 2;
   }
   Button btnWrite {
           X = 197;
           Y = 250;
           Width = 117;
           Height = 29;
           Title = "送信(Write)";
           TabIndex = 2;

           Function OnTouch( e ) {
                   try {
                           /* ^.sock_client[^.u].Write(^.txtString.Value); */
                           ^.sock_client.Write(^.txtString.Value);
                   }
                   catch(e) {
                           MessageBox("Message=" + str(e.Message) + "\nCategory=" + str(e.Category) + "\nCode="+ str(e.Code)  + "\nSubCode=" + str(e.subCode));
                   }
           }
   }

   Label Label9 {
           X = 457;
           Y = 230;
           Width = 74;
           Height = 20;
           Value = "受信データ";
           TabIndex = 2;
   }
   EditBox EdiString2 {
           X = 456;
           Y = 251;
           Width = 163;
           Height = 82;
           TabIndex = 2;
   }
}