This change makes it possible to run geth with JSON-RPC over HTTP and
WebSocket on the same TCP port. The default port for WebSocket
is still 8546. 
    geth --rpc --rpcport 8545 --ws --wsport 8545
This also removes a lot of deprecated API surface from package rpc.
The rpc package is now purely about serving JSON-RPC and no longer
provides a way to start an HTTP server.
		
	
			
		
			
				
	
	
		
			39 lines
		
	
	
		
			977 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			977 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package node
 | |
| 
 | |
| import (
 | |
| 	"net/http"
 | |
| 	"net/http/httptest"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/ethereum/go-ethereum/rpc"
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| func TestNewWebsocketUpgradeHandler_websocket(t *testing.T) {
 | |
| 	srv := rpc.NewServer()
 | |
| 
 | |
| 	handler := NewWebsocketUpgradeHandler(nil, srv.WebsocketHandler([]string{}))
 | |
| 	ts := httptest.NewServer(handler)
 | |
| 	defer ts.Close()
 | |
| 
 | |
| 	responses := make(chan *http.Response)
 | |
| 	go func(responses chan *http.Response) {
 | |
| 		client := &http.Client{}
 | |
| 
 | |
| 		req, _ := http.NewRequest(http.MethodGet, ts.URL, nil)
 | |
| 		req.Header.Set("Connection", "upgrade")
 | |
| 		req.Header.Set("Upgrade", "websocket")
 | |
| 		req.Header.Set("Sec-WebSocket-Version", "13")
 | |
| 		req.Header.Set("Sec-Websocket-Key", "SGVsbG8sIHdvcmxkIQ==")
 | |
| 
 | |
| 		resp, err := client.Do(req)
 | |
| 		if err != nil {
 | |
| 			t.Error("could not issue a GET request to the test http server", err)
 | |
| 		}
 | |
| 		responses <- resp
 | |
| 	}(responses)
 | |
| 
 | |
| 	response := <-responses
 | |
| 	assert.Equal(t, "websocket", response.Header.Get("Upgrade"))
 | |
| }
 |