我用Java编写了一个hello world Asterisk AGI脚本.脚本按预期运行并播放hello world声音文件,但是星号控制台发出错误:
错误[31058]:utils.c:1164 ast_carefulwrite:write()返回错误:管道损坏
知道我做错了什么吗?
我正在使用asterisk-java-0.3.1.jar和Asterisk 1.8.10.1~dfsg-1ubuntu1
Java类如下:
import org.asteriskjava.fastagi.AgiChannel;
import org.asteriskjava.fastagi.AgiException;
import org.asteriskjava.fastagi.AgiRequest;
import org.asteriskjava.fastagi.BaseAgiScript;
public class AgiHelloWorld extends BaseAgiScript
{
@Override
public void service(AgiRequest arg0, AgiChannel arg1) throws AgiException
{
answer();
streamFile("hello-world");
hangup();
}
}
Run Code Online (Sandbox Code Playgroud) 背景知识:
我正在写一个小型SPA,它将使用我也写过的后端。JS和后端API在同一服务器上。
即SPA将从foo.com加载,后端位于foo.com/api
过去,我一直将Spring Security与基于简单表单的登录一起使用。登录后,用户将获得一个会话cookie。很标准的东西。
对于这个应用程序,我研究了OAuth2隐式流程。我的理解是,用户将加载我的页面,然后从SPA引导用户到授权端点,以便我的应用程序可以获取令牌。用户将从授权端点重定向到登录表单。在用户使用表单进行身份验证之后,他们将被重定向回授权端点以获取令牌,并可能授予对JS客户端的访问权限。之后,将用户重定向到客户端指定的URL,并将新的访问令牌作为URL片段。
我有这项工作,一切都很好。我不太了解的部分是:当用户重定向到登录表单并进行身份验证时,将在服务器上创建一个会话,该会话必须至少持续足够长的时间,才能将用户重定向到授权端点以获取令牌。那时他们已经在我的服务器上拥有经过身份验证的会话,为什么不就此停止并使用传统的cookie和基于会话的登录呢?
authentication session session-cookies oauth-2.0 single-page-application