我什么时候应该使用Exception,InvalidArgumentException或UnexpectedValueException?
我不知道他们之间真正的不同,因为我总是使用Exception.
我XMLHttpRequest每秒都在服务器上,服务器将响应新消息.要调用XMLHttpRequest每一秒我使用a中的setInterval()函数SharedWorker.
但是,由于我每秒都在提出请求,我想知道是否setInterval()异步?
例如,如果一个XMLHttpRequest请求花了3秒钟来完成"由于延迟",我是否会同时setInterval()发出3个请求,或者等到第一个请求完成之后再等待1秒并发送另一个请求?
这是我的代码
function checkQueue(url)
{
var xhr = new XMLHttpRequest();
xhr.addEventListener("load", reqListener);
xhr.open('GET', url, true);
xhr.send();
}
function reqListener ()
{
var queue = JSON.parse(this.responseText);
notifyAllPorts(queue);
console.log(this.responseText);
}
setInterval(
function() {
checkQueue('/add-ons/icws/push.php')
}
, 1000);
Run Code Online (Sandbox Code Playgroud) 我有一个Laravel的Illuminate Collection的例子.该数组包含多个属性.
我需要能够根据2个不同的属性对集合进行排序.
我想首先按名为"sort"的属性进行排序,然后按名为"title"的属性进行排序.
另外,我有另一个集合,如果sort的值不为null,我喜欢通过"sort"列对其进行排序,然后将"sort"值为null的项进行洗牌.
我怎么做这种类型的排序?
我有一个使用c#和ASP.NET MVC 5编写的应用程序.我也使用Unity.Mvc进行依赖注入.
与许多其他类一起,该类MessageManager在IoC容器中注册.但是,MessageManager该类依赖于TempDataDictionary执行其工作的实例.此类用于为视图编写临时数据.
为了解决MessageManager我需要也注册一个实例的实例TempDataDictionary.我需要能够TempDataDictionary从MessageManager类中添加值,然后我需要从视图中访问临时数据.因此,我需要能够访问TempDataDictionary视图中的相同实例,以便我可以将消息写出给用户.
此外,如果控制器将用户重定向到其他地方,我不想丢失消息,我仍然希望能够在下一个视图上显示消息.
我尝试了以下注册TempDataDictionary和MessageManager:
Container.RegisterType<TempDataDictionary>(new PerThreadLifetimeManager())
.RegisterType<IMessageManager, MessageManager>();
Run Code Online (Sandbox Code Playgroud)
然后在我看来,我有以下解决方案的实例 IMessageManager
var manager = DependencyResolver.Current.GetService<IMessageManager>();
Run Code Online (Sandbox Code Playgroud)
但是,由于某种原因,消息会丢失.也就是说,当我解决时manager,TempDataDictionary不包含MessageManager从控制器添加的任何消息.
如何才能正确注册实例,TempDataDictionary以便数据在查看之前一直存在?
更新
这是我的IMessageManager界面
public interface IMessageManager
{
void AddSuccess(string message, int? dismissAfter = null);
void AddError(string message, int? dismissAfter = null);
void AddInfo(string message, int? dismissAfter = null); …Run Code Online (Sandbox Code Playgroud) 我在Windows 7 Pro上运行XAMPP.我正在尝试设置虚拟主机,以便当我使用"dev.app"作为域时,我直接进入laravel安装的公共文件夹.
Laravel位于 F:/xampp/htdocs/dev/public
我打开了httpd-vhosts.conf位于的文件F:\xamp\apache\conf\extra\https-vhosts.conf
用这个替换了一切
# Virtual Hosts
#
# Required modules: mod_log_config
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# <URL:http://httpd.apache.org/docs/2.4/vhosts/>
# for further details before …Run Code Online (Sandbox Code Playgroud) 我使用Ratchet创建了一个PHP websocket .此Websocket正在8080我的内部服务器的端口上运行10.0.4.160.
我试图从一个启用了SSL"又名使用https协议"的网站连接到它.
当尝试从FireFox浏览器连接到websocket时,我从浏览器中得到安全问题,因为我在安全/非安全连接之间混合.这是我在javascript控制台中看到的错误.
SecurityError:操作不安全.
为了解决安全问题,我创建了一个stunnel代理,允许我接受连接 10.0.4.160:58443并将其连接到端口127.0.0.1:8080.这个安全隧道应该允许我保持与websocket的连接,并绕过浏览器的安全检查.
但是,每次我尝试连接到websocket时都会出错
与'wss://10.0.4.160:58443 /'的WebSocket连接失败:连接建立错误:net :: ERR_TIMED_OUT
这是用于连接websocket的jQuery脚本
<script>
$(function(){
if ("WebSocket" in window)
{
var conn = new WebSocket('wss://10.0.4.160:58443');
conn.onopen = function(e) {
console.log("Connection established!");
showMessage('Connected', 0);
};
conn.onmessage = function(e) {
console.log(e.data);
showMessage(e.data, 1);
};
conn.onclose = function(e) {
console.log(e.code);
console.log(e.reason);
};
conn.onerror = function(e) {
console.log(e);
};
} else {
console.log('Your browser does not support Websocket!');
}
function showMessage(msg, append){ …Run Code Online (Sandbox Code Playgroud) 我使用Socket.io设置了一个websocket,并在node.js服务器上表达了4个框架.
我正在尝试在使用我的websocket时为我的用户实现授权步骤.
当用户连接时,令牌将作为查询值传递给服务器.在服务器级别,我在数据库中查询与传递的令牌匹配的会话.如果找到会话,我会做一些其他检查以确保令牌未被劫持.
问题
会话数据似乎在每次重新加载页面时被清除.或者服务器无法将sessionId链接到创建它的用户,因此每次生成新会话时都是如此.
我很困惑如何访问会话变量"如果它们被设置."
我的代码问题
当用户重新加载他/她的页面/客户端时,会话数据将在新请求上变为未定义.会话很好,直到页面刷新,这是我的问题.即使用户刷新页面,我也需要能够保持会话处于活动状态.
问题
如何确保在每次刷新页面时都不清除会话数据?
这是我的授权码
io.set('authorization', function (handshakeData, accept) {
var session = handshakeData.session || {};
//This is always undefined!
console.log('Session Data:' + session.icwsSessionId);
//var cookies = handshakeData.headers.cookie;
var token = handshakeData._query.tokenId || '';
//console.log('Token: ' + token);
if(!token){
console.log('Log: token was not found');
return accept('Token was found.', false);
}
//allow any user that is authorized
if(session && session.autherized && token == session.token){
console.log('Log: you are good to go');
return accept('You are good to …Run Code Online (Sandbox Code Playgroud) 我想填充数据表基于Ajax请求。
这是我所做的
$(function(e) {
$('#CampaignMenu').change(function(e) {
$('#ReportWrapper').hide();
if ( $(this).val() != '0') {
$('#DisplayReport').attr('disabled', false);
} else {
$('#DisplayReport').attr('disabled', true);
}
});
$('#DisplayReport').click(function (e) {
$.ajax({
type: 'GET',
url: '/getdata',
data: { 'campaign_id': $('#CampaignMenu').val() },
dataType: 'json',
success: function (json) {
$('#reportTable').DataTable({
data: json,
pageLength: 50,
lengthMenu: [10, 25, 50, 75, 100, 250, 500, 1000],
searching: false,
order: [ [ 2, 'desc' ] ],
columns: [
{ data: 'chain_name', title: 'Chain Name' },
{ data: 'store_id' , title: …Run Code Online (Sandbox Code Playgroud) 我遇到了很多问题,因为我的用户使用多个浏览器的选项卡来使用同一个应用程序。
问题是每个选项卡都将与服务器建立单独的连接以启动服务器发送的事件,并且服务器将运行一个循环来完成请求。(如果每个用户打开了 5 个选项卡,那么服务器将不得不启动 5 个不同的服务器发送事件来响应!)
有没有办法添加某种逻辑来检查客户端和服务器发送的脚本之间是否建立了连接,使用相同的连接而不是创建新的连接?
我认为这与使用 WebSocket 的想法相同。但是,我使用 WebSockets 的问题是每个用户都必须使用服务器发送的事件进行身份验证,并且不确定 WebSockets 是否可以做到这一点。当用户登录到应用程序时,我会生成一个 sessionID,并且在允许他们使用该站点之前,会话会检查他们的 IP/代理数据是否匹配。
如何将与服务器发送事件的连接最小化为每个用户 1 个?
我有一个服务器发送事件(SSE)实现,几乎没有任何问题。我遇到的唯一问题是“一个用户可以与服务器建立多个连接”。基本上,如果用户打开多个 Web 浏览器选项卡,每个选项卡都会创建一个全新的服务器发送事件请求到服务器,这会导致单个用户运行许多请求。
为了解决这个问题,我想在 Javascript 的SharedWorker中运行 SSE 。
这意味着我只有一个 SSE 与 SharedWorker 进行通信。然后,每个页面/网络浏览器都会与 SharedWorker 进行通信。这给了我只允许每个用户一个 SSE 的优势。
这就是我的 SSE 目前在没有任何类型的工作人员的情况下的工作方式。
$(function(){
//connect to the server to read messages
$(window).load(function(){
startPolling( new EventSource("poll.php") );
});
//function to listen for new messages from the server
function startPolling(evtSource){
evtSource.addEventListener("getMessagingQueue", function(e) {
var data = JSON.parse(e.data);
//handle recieved messages
processServerData(data);
}, false);
evtSource.onerror = function(e) {
evtSource.close();
};
}
});
Run Code Online (Sandbox Code Playgroud)
我希望运行相同的设置。然而,我想在 javascript 的 SharedWorker 中运行它,以消除每个用户拥有多个 SSE。
我正在努力实施 SharedWorker。这是我到目前为止所尝试的
我创建了一个名为的文件worker.js …
javascript jquery addeventlistener server-sent-events shared-worker
javascript ×6
jquery ×4
php ×3
websocket ×3
laravel ×2
ajax ×1
apache ×1
arrays ×1
asp.net-mvc ×1
asynchronous ×1
c# ×1
datatable ×1
datatables ×1
exception ×1
express ×1
httpd.conf ×1
node.js ×1
setinterval ×1
socket.io ×1
sorting ×1
ssl ×1
stunnel ×1
throw ×1
vhosts ×1
xampp ×1