ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

This content has been translated automatically.  Click here  to view the French version.
Help / WLanguage / WLanguage functions / Communication / Sockets
  • Optimizing the connections for an IP address
  • Timeout
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Others
Stored procedures
Connects a client computer to a given socket.
Remarks:
  • UDP sockets: The UDP protocol being a "connectionless" protocol, SocketConnect cannot be used with the UDP protocol. To send or receive data with the UDP protocol, you must create a UDP socket (SocketCreateUDP) then send/receive data with the "special UDP" syntaxes of SocketWrite and SocketRead.
  • SSL sockets: To send or receive data with the SSL protocol, you must create an SSL socket (SocketCreateSSL) and connect to this socket with SocketConnectSSL.
  • Communication with robots or with non-WINDEV applications: To simplify the exchanges of data by socket, a transmission mode is initialized by default. For a communication with an external module (non-WINDEV application, robot, ...), this transmission mode can prevent the communications from operating properly. SocketChangeTransmissionMode is used to change this transmission mode (the SocketNoEndTag constant allows you not to modify the frames read and written).
  • WEBDEV - Browser code Websockets: The WebSockets are used to communicate from a Web application (Intranet or Internet site run in a browser) to a Web server by using sockets. SocketConnect is used to connect to the WebSocket server. For more details, see Managing WebSockets.
    Warning
    From version 27, it is recommended to use WebSocketClientConnect and WebSocketClientConnectSSL to connect to the WebSocket server.
Reminder: A socket is a communication resource used by applications to communicate from one computer to another regardless of the type of network.
Example
WEBDEV - Server codePHP
IF SocketConnect("Serveur", 8000) = False THEN
Error("erreur de connexion " + ErrorInfo(errMessage))
END
WEBDEV - Browser code
SocketConnect("client", "ws[s]://<AdresseDuServeurDeWebSocket>", SurEvenementSocket)
 
INTERNAL PROCÉDURE SurEvenementSocket(nEvenement, sMessage)
 
SWITCH nEvenement
 
CASE SocketOpening
SocketWrite("client", "Envoi message depuis le navigateur.")
 
CASE SocketMessage
Info("Réception d'un message serveur: " + sMessage)
 
CASE SocketClosing
Info("Fermeture du socket", sMessage)
 
CASE SocketError
Error("Erreur du socket")
END
END
Syntax
WEBDEV - Server codePHP

Connecting to a socket Hide the details

<Result> = SocketConnect(<Socket name> , <Port number> [, <Address> [, <Maximum timeout>]])
<Result>: Boolean
  • True if the function was successful,
  • False otherwise. If an error occurs, you can get more details on the error with ErrorInfo.
<Socket name>: Character string
Name that will be given to the connection opened on the server socket. This name will be used by all socket functions.
<Port number>: entier
Port number of the socket. If you are using a socket associated with a preset protocol, use the port number associated with the protocol.
If the socket was created by a WINDEV application, this number must be included between 5 000 and 65 000. In this case, the number must be identical to the port number specified in SocketCreate.
<Address>: Optional character string
Server address. If this parameter is not specified, the server is sought on the current computer. This address can be given in the following format:
  • IP address in XXX.XXX.XXX.XXX format (125.5.110.100 for example).
  • URL containing the server name (www.windev.com for example). This syntax is recommended.
WEBDEV - Server code The address can also correspond to the IP address returned by NetIPAddress.
<Maximum timeout>: Optional integer or optional Duration
Maximum timeout (in milliseconds) for establishing the connection. This timeout will be used if the server refuses the connection (SocketDeny). In this case, the connection will not be locking. This parameter can be:
  • an integer corresponding to the number of milliseconds,
  • a Duration variable,
  • the duration in a readable format (e.g., 1 s or 10 ms).
This timeout is set to 5000 milliseconds by default (5 seconds). For more details, see the remarks.
PHP This parameter is ignored.
WEBDEV - Browser code
Warning
From version 27, it is recommended to use WebSocketClientConnect and WebSocketClientConnectSSL to connect to the WebSocket server.

Connecting to a WebSocket Hide the details

SocketConnect(<Socket name> , <Address> , <Browser WLanguage procedure> [, <Protocol(s)>])
<Socket name>: Character string
Name that will be given when connecting to the server. This name will be used by all socket functions. Caution: The socket name is case sensitive.
<Address>: Character string
Address of the WebSocket server that will be used for the connection. This address has the following format: ws[s]://server[:port][/directoryX/.../]. In this case:
  • the ws prefix indicates that the server is a WebSocket server. wss is used for a secure WebSocket server.
  • server corresponds to the server address in the following format: server name, server domain name or IP address.
  • port corresponds to the number of the communication port used to dialog with the server. This number must be identical to the port number specified in SocketCreate if the WebSocket server was created in WLanguage with WINDEV or WEBDEV.
  • directoryX corresponds to the possible virtual directories of server.
<Browser WLanguage procedure>: Procedure name
Name of the WLanguage procedure ("callback") written in browser code. Name of the procedure called when the connection to the server is established. This procedure can be used to send a message to the server with SocketWrite, for example.
For more details on this procedure, see Parameters of the procedure used by SocketConnect.
<Protocol(s)>: String or array of strings (optional)
Protocol(s) corresponding to the format of the WebSocket response. For example: "JSON", "XML". If this parameter is not specified or is an empty string, no protocol is used.
Remarks
WEBDEV - Server code

Optimizing the connections for an IP address

When an IP address is passed to SocketConnect, the connection can be optimized by using the following code:
Socket.Option = SocketOptimizeIPConnection
This option is not enabled by default because the connection may fail in some configurations. However, it may be useful in some applications for which the performance is critical.
Remark: To restore the default behavior, simply use the SocketOptionDefault constant:
Socket.Option = SocketOptionDefault
WEBDEV - Server code

Timeout

The timeout specified by <Maximum timeout> groups the timeout of two steps:
  • the timeout for address resolution: this timeout cannot be configured and it can be optimized (see below).
  • the maximum timeout for the connection to be accepted by the server. Several cases may occur:
    • the server refuses the connection.
    • the server accepts the connection within the timeout limit.
    • the server is not available.
    • the specified address is invalid.
To optimize the timeout for address resolution (time required to find the address), we advise you to:
  • use a DNS on the network. Therefore, this address will be sought toward this server and not for each computer (1 search instead of x searches where x represents the number of computers). Each computer must be registered toward this server.
  • for an IP address, use the Socket.Option variable as follows:
    Socket.Option = SocketOptimizeIPConnection
Component: wd290com.dll
Minimum version required
  • Version 9
This page is also available for…
Comments
NO WORK WITH WebSocketServer
the syntax does not work for WebSocketServer in version 26.
CASTILLO / FRANCO
02 Jun. 2022

Last update: 07/04/2023

Send a report | Local help