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;
}
}