请阅读我的问题,即使是一小段建议也会感激不尽。
我在Google Chrome中遇到以下错误:
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1419089743449-2 404 (Not Found)
我的文件夹设置如下:
本地主机
亲
公共
socket.io/socket.io.js
cssfile.css
jsfile.js
app.js
node_ modules
在我看来,客户端对握手的请求是错误的,因为错误应该是localhost / pro / public / socket.io / blah blah。
我使用以下设置:
web.config:
<handlers>
<add name="iisnode" path="app.js" verb="*" modules="iisnode" />
</handlers>
<rewrite>
<rules>
<rule name="DynamicContent">
<match url="/pro/" negate='True'/>
<!--<conditions>
<add input="pro" matchType="IsFile" negate="True"/>
</conditions>-->
<action type="Rewrite" url="app.js"/>
</rule>
<rule name="LogFile" patternSyntax="ECMAScript">
<match url="socket.io"/>
<action type="Rewrite" url="app.js"/>
</rule>
</rules>
</rewrite>
客户端js:
var socket = io.connect('http: //localhost', {resource: 'pro/public/socket.io' });
服务器端js(节点):
var http = require('http');
var express = require('express');
var app = express();
var port = process.env.PORT || 3002;
var server = http.createServer(app).listen(port);
io = require('socket.io').listen(server, { resource : '/pro/public/socket.io' });
我按照预期得到了html,并且也提供了静态文件;我无法让socket.io工作。
答案 0 :(得分:2)
解决方案:
改变:
io = require('socket.io')。listen(server,{resource:'/ pro / public / socket.io'});
要
io = require('socket.io')。listen(server,{path:'/ pro / public / socket.io'});
这对我有用,我希望它也适合你! :)
答案 1 :(得分:0)
Drizo,我认为你在socket.io上的404是各种各样的东西,但我不是一个巨大的专家! :)
首先,你的连接字符串中缺少端口,你需要这个。
其次,我不是100%确定你的socket.io初始化是正确的,虽然我使用名称空间并且之前没有听说过资源,我看起来像:
var app = require('express')();
var http = require('http').Server(app);
var config = require('./config')();
var server = http.listen(config.server.port, function () {
console.log('listening on *:' + config.server.port);
});
var socketIo = require('socket.io');
var io = socketIo(http);
var namespaceIo = io.of('/namespace');
namespaceIo.on('connection', function (socket) {
//configuration for events follows
socket.on('someEvent', function (input) {
...
}
}
使用这些行可以命名为socket.io实现,客户端可以连接类似
的内容function initSocket(__bool){
if(__bool == true){
io(serverAddress + '/namespace');
if ( !socket ) {
socket = io.connect(serverAddress + '/namespace');
} else {
socket.socket.connect(serverAddress + '/namespace'); // Yep, socket.socket ( 2 times )
}
// now that we have the socket we can bind events to it
bindSocketEvents();
}else{
socket.disconnect();
}
}