Код: Выделить всё
byte[] arybytAck = new byte[] { (byte)'a'
, (byte)'c'
, (byte)'k' };
stream.Write(arybytAck, 0, arybytAck.Length);
Код: Выделить всё
webSocket.onmessage = (event) => {
DebugMsg("webSocket.onmessage"
+ ((typeof event == "object"
&& typeof event.data == "string") ? ":" + event.data : ""));
};
Вот тело тела принимающего потока:
Код: Выделить всё
public void WebSocketServer() {
while (mblnRunTillStopped == true) {
try {
TcpClient tcpClient = mWebSocketServer.AcceptTcpClient();
if (tcpClient.Connected != true) {
continue;
}
Console.WriteLine(FrmMain.strTimeStampMsg("WebSocketServer(): client connected"));
NetworkStream stream = tcpClient.GetStream();
while (true) {
Thread.Sleep(mcintWebSocketServerThreadSleep);
if (mblnRunTillStopped != true) {
break;
}
if (stream.DataAvailable != true) {
continue;
}
IPEndPoint ipEndPoint = tcpClient.Client.RemoteEndPoint as IPEndPoint;
FrmMain.sobjThis.AddSubscriber(ipEndPoint.Address);
Byte[] arybytData = new byte[tcpClient.Available];
int intRxLength = stream.Read(arybytData, 0, arybytData.Length);
if (intRxLength == 0) {
break;
}
IPAddress ipClient = (tcpClient.Client.RemoteEndPoint as IPEndPoint).Address;
string strRX = Encoding.ASCII.GetString(arybytData);
FrmMain.sobjThis.UpdateClientStats(eRequest: eCounterState.INCREMENT);
if (Regex.IsMatch(strRX, "^GET") == true) {
WebSocketHandshake(arybytData, stream);
//First byte should be '129'
} else if (arybytData[0] == 0x81) {
//Is data masked?
bool blnFinished = ((arybytData[0] & 0x01) == 0x01);
bool blnMsgRecvd = ((arybytData[0] & 0x80) == 0x80);
byte bytMask = (byte)(arybytData[1] & 0x01);
ulong ulngMsgLength = (ulong)(arybytData[1] & 0x7f)
,ulngOffset = mcintWebSocketDataStartIdx;
if (ulngMsgLength == 0x7e) {
//Bytes are reverseved, websocket will print them in big-endian
ulngMsgLength = BitConverter.ToUInt16(new byte[] {
arybytData[3], arybytData[2]}, 0);
ulngOffset += 2;
} else if (ulngMsgLength == 0x7f) {
ulngMsgLength = BitConverter.ToUInt64(new byte[] {
arybytData[9], arybytData[8], arybytData[7]
,arybytData[6], arybytData[5], arybytData[4]
,arybytData[3], arybytData[2] }, 0);
ulngOffset += 8;
}
if (ulngMsgLength > 0 && bytMask > 0) {
byte[] arybytDecoded = new byte[ulngMsgLength];
byte[] arybytMasks = new byte[4] {arybytData[ulngOffset++]
,arybytData[ulngOffset++]
,arybytData[ulngOffset++]
,arybytData[ulngOffset++]};
for (ulong i=0; i WebSocketServer());
mWebSocketThread.Start();
} catch (Exception ex) {
FrmMain.UpdateTaskbar(ex.ToString());
}
https://developer.mozilla.org/en-US/docs/ Web/API/WebSockets_API/Writing_WebSocket_server
Изменен на порт 8080, все еще не работает.
Подробнее здесь: https://stackoverflow.com/questions/792 ... ket-client
Мобильная версия