相关疑难解决方法(0)

如何在PHP中创建websockets服务器

是否有任何教程或指南显示如何在PHP中编写一个简单的websockets服务器?我试过在谷歌上寻找它,但我找不到很多.我发现phpwebsockets但它现在已经过时,不支持最新的协议.我自己尝试更新它,但它似乎不起作用.

#!/php -q
<?php  /*  >php -q server.php  */

error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush();

$master  = WebSocket("localhost",12345);
$sockets = array($master);
$users   = array();
$debug   = false;

while(true){
  $changed = $sockets;
  socket_select($changed,$write=NULL,$except=NULL,NULL);
  foreach($changed as $socket){
    if($socket==$master){
      $client=socket_accept($master);
      if($client<0){ console("socket_accept() failed"); continue; }
      else{ connect($client); }
    }
    else{
      $bytes = @socket_recv($socket,$buffer,2048,0);
      if($bytes==0){ disconnect($socket); }
      else{
        $user = getuserbysocket($socket);
        if(!$user->handshake){ dohandshake($user,$buffer); }
        else{ process($user,$buffer); }
      }
    }
  }
}

//---------------------------------------------------------------
function process($user,$msg){
  $action = unwrap($msg);
  say("< ".$action);
  switch($action){
    case "hello" : send($user->socket,"hello human");                       break;
    case …
Run Code Online (Sandbox Code Playgroud)

javascript php websocket

75
推荐指数
4
解决办法
15万
查看次数

Python中的WebSocket服务器:'module'对象没有属性'AF_INET'

我试图运行这个简单的Python WebSocket,只做了一些非常小的改动.我正在运行Python 2.4.3,因为我不能使用更新的版本,但我不确定它有多重要.

这是我得到的错误:

Traceback (most recent call last):
  File "socket.py", line 258, in ?
    server = WebSocketServer("localhost", 8000, WebSocket)
  File "socket.py", line 205, in __init__
    self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
AttributeError: 'module' object has no attribute 'AF_INET'
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

import time
import struct
import socket
import base64
import sys
from select import select
import re
import logging
from threading import Thread
import signal

# Simple WebSocket server implementation. Handshakes with the client then echos back everything
# that is received. Has …
Run Code Online (Sandbox Code Playgroud)

python sockets websocket

25
推荐指数
3
解决办法
5万
查看次数

PHP中的简单websocket服务器

我正在用PHP开发一个简单的websocket服务器.我知道有很多现有的实现,但我想自己做,以便更好地学习协议.我设法做握手罚款,我的客户连接到服务器.我还设法解码来自客户端的数据,但我发送回消息时遇到问题.客户端收到我的响应后会断开连接.Firefox说The connection to ws://localhost:12345/ was interrupted while the page was loading..

我用这个答案作为指导.

这是我的数据包装代码:

private function wrap($msg = ""){
    $length = strlen($msg);
    $this->log("wrapping (" . $length . " bytes): " . $msg);

    $bytesFormatted = chr(129);
    if($length <= 125){
        $bytesFormatted .= chr($length);
    } else if($length >= 126 && $length <= 65535) {
        $bytesFormatted .= chr(126);
        $bytesFormatted .= chr(( $length  >> 8 ) & 255);
        $bytesFormatted .= chr(( $length       ) & 255);
    } else {
        $bytesFormatted .= chr(127);
        $bytesFormatted …
Run Code Online (Sandbox Code Playgroud)

php websocket phpwebsocket

15
推荐指数
1
解决办法
2419
查看次数

在服务器事件上从服务器向客户端发送通知

如何使用PHP从服务器向客户端发送消息,避免无关的Ajax调用.

这是一个想法:

  1. 用户:Alice进行了一次更改,并将其发送到服务器.

  2. 然后,服务器检查哪些用户不是最新的,如果没有,则调用一些代码将与更改有关的信息发送给Bob(在这种情况下,谁不是最新的).

如何向Bob发送消息?

php ajax client-server

13
推荐指数
3
解决办法
2万
查看次数

没有JEE /应用程序服务器的独立WebSocket服务器

我需要在Java SE中实现一个相当简单的WebSocket服务器.它需要做的只是接受连接并存储相应的会话,然后在发出特定事件时向所有连接的客户端发送消息.

我找不到一个如何在常规Java SE中执行此操作的教程.所有这些都需要与Maven一起运行,或者将它部署为WAR - 这对于这个项目来说都是不可能的.我需要将其作为Java SE桌面应用程序运行.

该教程我发现展示了如何实现使用注释就像一个端点@OnOpen,@OnMessage@OnClose.但是,它们都没有解释如何实际初始化服务器.我还需要能够为传入连接指定不同的端口号.

我错过了什么吗?我知道人们使用WebSocket制作聊天应用程序,而且真的不需要Web应用程序服务器.我也没有使用Maven,并且为了简单起见,我宁愿保持这种方式.

java websocket server

9
推荐指数
2
解决办法
3413
查看次数

如何(de)在WebSockets hybi 08+中构建数据框架?

自从Chrome更新到第14 版后,他们从草案的第3版升级到草稿第8版.

我有一个在WebSocket上运行的内部聊天应用程序,虽然我已经让新的握手正常工作,但数据框架显然也发生了变化.我的WebSocket服务器基于Nugget.

有没有人让WebSocket使用草案的第8版,并举例说明如何构建通过线路发送的数据?

c# websocket

8
推荐指数
2
解决办法
1万
查看次数

通过Python socket/WebSocket Client发送/接收WebSocket消息

我写了一个简单的WebSocket客户端.我使用了我在SO上找到的代码,这里:我如何在服务器端发送和接收WebSocket消息?.

我正在使用Python 2.7,我的服务器echo.websocket.org80TCP端口上.基本上,我认为接收消息时遇到问题.(或者也许发送错了?)

至少我确信握手没问题,因为我收到了很好的握手响应:

HTTP/1.1 101 Web Socket Protocol Handshake
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: content-type
Access-Control-Allow-Headers: authorization
Access-Control-Allow-Headers: x-websocket-extensions
Access-Control-Allow-Headers: x-websocket-version
Access-Control-Allow-Headers: x-websocket-protocol
Access-Control-Allow-Origin: http://example.com
Connection: Upgrade
Date: Tue, 02 May 2017 21:54:31 GMT
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Server: Kaazing Gateway
Upgrade: websocket
Run Code Online (Sandbox Code Playgroud)

我的代码:

#!/usr/bin/env python
import socket

def encode_text_msg_websocket(data):
    bytesFormatted = []
    bytesFormatted.append(129)

    bytesRaw = data.encode()
    bytesLength = len(bytesRaw)

    if bytesLength <= 125:
        bytesFormatted.append(bytesLength)
    elif 126 <= bytesLength <= 65535:
        bytesFormatted.append(126)
        bytesFormatted.append((bytesLength >> 8) …
Run Code Online (Sandbox Code Playgroud)

python sockets decode protocols websocket

6
推荐指数
1
解决办法
3999
查看次数

Python 中的 WebSocket 帧解码

我尝试在服务器端实现WebSocket帧解密算法(基于此:How can I send and receive WebSocket messages on the server side? )。这是我所得到的:

def decode(data):
    frame = bytearray(data)

    length = frame[1] & 127

    indexFirstMask = 2
    if length == 126:
        indexFirstMask = 4
    elif length == 127:
        indexFirstMask = 10

    indexFirstDataByte = indexFirstMask + 4
    mask = frame[indexFirstMask:indexFirstDataByte]

    i = indexFirstDataByte
    j = 0
    decoded = []
    while i < len(frame):
        decoded.append(frame[i] ^ mask[j%4])
        i += 1
        j += 1

    print decoded

    return "".join(chr(byte) for byte in decoded) …
Run Code Online (Sandbox Code Playgroud)

python decode mask websocket

5
推荐指数
1
解决办法
3898
查看次数

Websocket:发送超过 65535 字节的消息失败

我从头开始用java开发了一个websocket服务器。javascript 客户端在浏览器中运行:

function connectToServer() {
    connection = new WebSocket("ws://" + document.domain + ":8351");       
    connection.onopen = function () {
    };

    connection.onmessage = function (e) {
        handleServerResponse(e.data);
    };
}
Run Code Online (Sandbox Code Playgroud)

一切都很好,直到消息 (json) 达到 65535 字节。然后套接字被关闭(我还没有弄清楚,如果客户端或服务器关闭连接。

在浏览器控制台(尝试了多个浏览器)中,我看到: 加载页面时与 ws://localhost:8351/ 的连接被中断。

在服务器端,我看到: java.net.SocketException: Connection Reset at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)

因此,如果问题出在握手中,或者我在服务器中错误地构建了框架,并且客户端关闭了连接,或者我将字节写入错误的流中,并且 java io 关闭了套接字。

我的代码(服务器):

1)握手(服务器响应)

  String _01 = "HTTP/1.1 101 Switching Protocols\r\n";
  String _02 = "Upgrade: websocket\r\n";
  String _03 = "Connection: Upgrade\r\n";
  String _04 = "Sec-WebSocket-Accept: " + responseKey + "\r\n";
  String _05 = "Content-Encoding: identity\r\n";
Run Code Online (Sandbox Code Playgroud)

2)构建框架(大消息是否应该分解到不同的框架?) …

java websocket

3
推荐指数
1
解决办法
3413
查看次数