小编Ara*_*yan的帖子

Symfony2 WebSocketBundle - ZMQ Push无法正常工作

我正在使用Symfony2来构建一个简单的聊天应用程序.我决定使用GeniusesOfSymfony/WebSocketBundle作为我的WebSocket,由Ratchet提供支持:

https://github.com/GeniusesOfSymfony/WebSocketBundle

我设法使用PubSub进行聊天,但我想使用推送集成:我希望客户端通过AJAX将消息发送到我的Symfony2控制器,而控制器又将消息推送到WebSocket的所有客户端.

我按照这个文档页面:

https://github.com/GeniusesOfSymfony/WebSocketBundle/blob/master/Resources/docs/Pusher.md

我尝试过使用ZMQ和Websocket Pusher.

使用ZMQ,当我运行websocket时,我得到了cmd通知:

ZMQ传输监听127.0.0.1:5555

但是,推送消息不起作用:

$pusher = $this->container->get("gos_web_socket.zmq.pusher");
//push(data, route_name, route_arguments)
$pusher->push(["type" => "newMessage", "text" => $request->request->get("msg")], "chat_topic");
Run Code Online (Sandbox Code Playgroud)

这是我的ChatTopic类中的onPush方法:

class ChatTopic implements TopicInterface, PushableTopicInterface {

    public function onPush(Topic $topic, WampRequest $request, $data, $provider) {
        $topic->broadcast($data);
    }
}
Run Code Online (Sandbox Code Playgroud)

永远不会调用onPush方法.此外,推动事件永远不会被解雇.代码中似乎没有例外.

使用WebSocket Pusher,我甚至无法使服务运行.在cmd中没有像ZMQ那样的通知,并且使用netstat命令我无法检测到它正在侦听端口1337.当我尝试推送它时,我得到异常:

无法打开插座.原因:无法建立连接,因为目标计算机主动拒绝它

可能是因为没有服务侦听端口1337.

PS - 我在Windows 10上并使用WAMP服务器.我已成功在WAMP上安装了ZMQ扩展,如下所示phpinfo().

php zeromq websocket symfony ratchet

12
推荐指数
1
解决办法
674
查看次数

如何在有限的时间内对匿名用户进行身份验证/授权?

假设我有一个发票实体.发票属于某个用户(invoices.user_id).

如果用户输入myapp.com/invoices/1,则需要登录才能访问其发票.这很正常.

有时invoices.user_id为空(发票所有者在我们的系统中没有帐户),但我们有一个invoices.phone_number列.

目标是为我们系统中没有帐户的用户创建基于SMS代码验证的身份验证系统.如果用户确认他确实拥有与发票相关的电话号码(代码验证),我想授予他临时访问权限(15分钟)到此发票详细信息页面(仅限此页面).

我的第一个想法是使用存储在会话中的JWT令牌.

我的第二个想法是使用自定义防火墙.

有没有更好的方法?

php symfony symfony-security

9
推荐指数
1
解决办法
349
查看次数

Facebook登录sdk - Android

我正在尝试使用facebook登录连接我的应用程序.我做了所有这些步骤,我面临一个奇怪的问题.所以登录按钮有效,因为facebook登录窗口出现但我没有获得facebook令牌(调用onError).

我已经尝试过本课题的所有解决方案.

此代码与Facebook教程中的代码相同.

mCallbackManager = CallbackManager.Factory.create();
    LoginButton loginButton = findViewById(R.id.login_button);
    loginButton.setReadPermissions("email");
    loginButton.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            Log.d(TAG, "facebook:onSuccess:" + loginResult);
        }

        @Override
        public void onCancel() {
            Log.d(TAG, "facebook:onCancel");
        }

        @Override
        public void onError(FacebookException error) {
            Log.d(TAG, "facebook:onError", error);
            error.printStackTrace();
        }
    });
Run Code Online (Sandbox Code Playgroud)

这是我的错误,与问题(额外:null)略有不同:

09-12 21:13:40.317 29573-29573/com.xxxx.yyyy D/FACEBOOK: facebook:onError
SERVER_ERROR: [code] 1675030 [message]: Error performing query. [extra]: null
    at com.facebook.login.LoginManager.onActivityResult(LoginManager.java:219)
    at com.facebook.login.LoginManager$1.onActivityResult(LoginManager.java:174)
    at com.facebook.internal.CallbackManagerImpl.onActivityResult(CallbackManagerImpl.java:92)
Run Code Online (Sandbox Code Playgroud)

AndroidManifest.xml中

        <meta-data android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/facebook_app_id"/>

    <activity android:name="com.facebook.FacebookActivity"
        android:configChanges= …
Run Code Online (Sandbox Code Playgroud)

java android facebook-android-sdk

7
推荐指数
1
解决办法
537
查看次数

LimitIterator 偏移量 1 有 2 个元素

我面临的问题是我有一个读取 CSV 文件的 SplFileObject,然后我将它包装到一个 LimitIterator 中。

CSV 文件有 2 行、标题和 1 行,我将 LimitIterator 偏移量设置为 1,但无法覆盖它,似乎索引存在一些内部问题。

这是代码:

    $csvFile = new \SplFileObject($fileName);
    $csvFile->setFlags(\SplFileObject::READ_CSV);
    $iterator = new \LimitIterator($csvFile, 1);

    /** @var \LimitIterator $it */
    foreach ($iterator as $it) {

        list($.., $.., $..) = $it;
        $result[] = [
            ...
        ];
    }


    return $result;
Run Code Online (Sandbox Code Playgroud)

如果 CSV 有 3 行(标题和 2 行),则代码运行良好,但只有标题和 1 行,它不起作用。

任何的想法?

谢谢。

php csv

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

如何更改php服务器时区?

我们可以使用任何简单的代码来仅显示系统时间,但我需要一些代码来查找服务器(PHP)时区以及如何更改服务器时区?

php timezone

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

PHP get 方法奇怪地工作我不知道如何解决

我需要 get 方法但不起作用

我的代码:

<?php
    $page = $_GET['page'] ? intval($_GET['page']) : 1;
    echo "current page : ".$page."<br/>";
?>
Run Code Online (Sandbox Code Playgroud)

$page 的结果是 1. 但我尝试www.example.com/test.php?page=3

$page 的结果仍然是输出 1。

为什么会这样?

php get request

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

使用 Dropzone 'ProcessQueue' 事件发送参数

这是我的问题。

我目前正在 Laravel 中构建一个应用程序,并使用 DropZone 来上传用户图像。现在在“新用户”页面上,我有用户详细信息和 dropzone 保管箱,它们都被单独处理。

我将首先运行“创建用户”方法,然后如果没问题,上传图像。

问题在于 Dropzone 在准备上传时不知道新用户 ID(因为它需要分配给数据库中的正确用户)。

我以某种方式需要能够将新用户 ID 传递回 dropzone 'processQueue' 方法,以在图像上传中使用新用户 ID,有人知道这是否可行吗?

在一个完美的世界中,我将能够将新 id 传递到“processQueue”函数中,例如processQueue(newUserId)获取它并将其添加到表单数据中以与图像一起发送。

到目前为止,这是我的代码

HTML

<div id="user_profile" class="dropzone dropzone-box">
  <div class="dz-message needsclick">
     <h3>Select Image</h3>
     <hr>
     <p>Click here or drag and drop image</p>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

JS

//Bind dropzone to user profile image
var userProfile = new Dropzone('#user_profile',{
    url: '/ajax/userProfileUpload',
    autoProcessQueue:false,
    maxFiles:1,
    addRemoveLinks:true,
    paramName: 'profile_pic', // The name that will be used to transfer the file
    init: function(){
        this.on("maxfilesexceeded", function(file) …
Run Code Online (Sandbox Code Playgroud)

javascript php laravel dropzone.js

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

根据标准建议在课堂上允许多少属性

这里有一些代码示例

class A {
    public $attribute1;
    public $attribute2;
    public $attribute3;
    ........
    public $attributeN;
}
Run Code Online (Sandbox Code Playgroud)

我需要知道我在课堂上可以拥有多少属性.关于这个PSRphpmd其他标准的说法是什么?

以萌芽为例,我可以拥有"我想要多少",但我需要用PSR和编写它phpmd.我正在寻找这个,但仍然无法找到.

感谢帮助.

php standards class phpmd

-10
推荐指数
1
解决办法
416
查看次数